6

Excelファイルがあり、シート内の複数の行を更新したいので、次のコードを書きます:

OleDbConnection cn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + serverPath + ";Extended Properties = Excel 8.0;");
        try
        {

            strUpd = "";
            strUpd += "update [Data14City$] set  B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8  where id = 1 ";
            strUpd += " update [Data14City$] set  B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0  where id = 2";
            cn.Open();
            OleDbCommand cmdInsert = new OleDbCommand(strUpd, cn);
            cmdInsert.ExecuteNonQuery();
            cn.Close();
        }
        catch
        {
        }

そして、私はこのエラーを受け取りました:

クエリ式の構文エラー (演算子の欠落) 'id = 1 update [Data14City$] set B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0 where id = 2'.

;この行に追加すると、次のようになります。

strUpd += "update [Data14City$] set  B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8  where id = 1;";

このエラーが発生しました:

SQL ステートメントの終了後に見つかった文字。

Excelで複数のステートメントを実行するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

そのように更新を積み重ねる必要はありません (実際、上で指摘したように、それはできません)。それらを個別に実行するのにそれほど時間はかかりません。これが私が使用してきたコードで、正常に動作します(実際には私のコードをループに入れていますが、更新をループできない場合でも同様に機能します)。

cn.Open();

using (OleDbCommand cmd = cn.CreateCommand())
{
    cmd.CommandText = "update [Data14City$] set  B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8  where id = 1";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "update [Data14City$] set  B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0  where id = 2";
    cmd.ExecuteNonQuery();

    // ... and so on
}

cn.Close();
于 2012-11-13T20:31:35.737 に答える