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