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


 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();

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

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

但是在上面的陈述中,你写在不同的不同的陈述中供选择并插入查询 。

所以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();

您的查询结果将返回一个DataTable 。所以用DatAdapter来填充DataTable.

你做错了,你必须 对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);

最新更新