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. したがって、 a を使用して aDatAdapterを埋めますDataTable

于 2012-09-15T05:37:20.623 に答える
1

サブクエリを使用する場合、このような select ステートメントを使用することはできません。単一のステートメントである必要があります

ただし、上記のステートメントでは、selection と insert query に対して異なるステートメントを記述しています。

したがって、テキストステートメントcmd.ExecuteNonquery()のみを実行するため、SQLエンジンは見つけることができず(SELECTは予約済みキーワードです)、エラーが発生しますinsertSELECT

サブクエリを使用する場合は、これを試してください

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 に答える