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

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

4

3 回答 3

1

你做错了,你必须对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);
于 2012-09-15T05:25:37.243 回答
1

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

于 2012-09-15T05:37:20.623 回答
1

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

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

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

于 2012-09-15T05:39:45.580 回答