繁体   English   中英

在c#中,如何在变量中分配sql查询结果?

[英]In c#, how to assign a sql query result within a variable?

 SqlConnection connection = new SqlConnection(connString.ToString());
    string select = "SELECT (CASE WHEN MAX(page_no) IS NULL  THEN 1 ELSE MAX(page_no)+1 END) FROM dbo.BOOK";
    string insert = "INSERT INTO dbo.BOOK (book_id,select) VALUES (121,4)";
    SqlCommand sqlCommand = new SqlCommand(insert,connection);
    insert.ExecuteNonQuery();

这里我得到了插入包含无效字符串选择的异常。 请告诉我如何在插入中分配子查询?

你做错了,你必须在SQLCommand对象上执行查询而不是在字符串对象上试试这个

using(SqlConnection connection = new SqlConnection(connString.ToString())){
string insert = "Insert Query";
using (SqlCommand sqlCommand = new SqlCommand(insert,connection))
{
 con.Open();
 int i = sqlCommand.ExecuteNonQuery();
}
}

更新:

 var selectQuery = "SELECT (CASE WHEN MAX(page_no) IS NULL THEN 1 ELSE MAX(page_no)+1 END) FROM dbo.BOOK";
 var insertQuery = string.format("INSERT INTO dbo.BOOK (book_id,{0}) VALUES (121,4)",selectQuery);

您的查询结果将返回一个DataTable 因此,使用DatAdapter填充DataTable

如果要使用必须在单个语句中的子查询,则不能使用这样的select语句

但是在上面的语句中,您可以使用不同的语句编写选择和插入查询。

所以cmd.ExecuteNonquery()只执行insert文本语句,因此SQL引擎无法找到SELECT (而SELECT是一个保留关键字)所以它会给你一个错误

如果你使用子查询试试这个

SqlConnection connection = new SqlConnection(connString.ToString());

string select = "SELECT 121, (CASE WHEN MAX(page_no) IS NULL  THEN 1 ELSE MAX(page_no)+1 END) FROM dbo.BOOK";
string insert = "INSERT INTO dbo.BOOK (book_id,[select]) "+select;

SqlCommand sqlCommand = new SqlCommand(insert,connection);

sqlCommand.ExecuteNonQuery();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM