DOBON.NET DOBON.NETプログラミング掲示板過去ログ

OleDatabaseのUpdateCommandにてステートメントの構文エラー

環境/言語:[C#]
分類:[.NET]

はじめまして。

少々尋ねたいのですが、

m_cmdUpdate.CommandText = "UPDATE " +
m_tableName + "SET Value=hogehoge WHERE Name=Uri";

のようなSQLの入ったコマンドを実行したところ、
「UPDATE ステートメントの構文エラー」
との表示が出力されました。

SQL自体は間違っていないと思うのですが、
もし変なところや間違っているところがあれば、指摘をお願いします。
> m_cmdUpdate.CommandText = "UPDATE " +
> m_tableName + "SET Value=hogehoge WHERE Name=Uri";
>
> のようなSQLの入ったコマンドを実行したところ、
> 「UPDATE ステートメントの構文エラー」
> との表示が出力されました。
>
> SQL自体は間違っていないと思うのですが、
> もし変なところや間違っているところがあれば、指摘をお願いします。 

シングルクォテーションとかはいかがですか?
■No16164に返信(夏さんの記事)
> はじめまして。
>
> 少々尋ねたいのですが、
>
> m_cmdUpdate.CommandText = "UPDATE " +
> m_tableName + "SET Value=hogehoge WHERE Name=Uri";
もしかして、
m_tableName + " SET ..
こうですかね?("SET"の前にスペース一つ)
返信ありがとうございます。

助言通り、早速手を加えてみました。

m_cmdUpdate.CommandText =
"UPDATE " + m_tableName + " SET Value = 'hogehoge' WHERE Name = 'Uri'";

ですが、↑ように変更してみても、やはり
「UPDATE ステートメント構文のエラーです」
と、エラーメッセージを頂いてしましました。

SELECT文は同じ値(Name,Value)で動いているのですが……。
■No16167に返信(夏さんの記事)
> m_cmdUpdate.CommandText =
> "UPDATE " + m_tableName + " SET Value = 'hogehoge' WHERE Name = 'Uri'";
>
> ですが、↑ように変更してみても、やはり
> 「UPDATE ステートメント構文のエラーです」
> と、エラーメッセージを頂いてしましました。

CommandText = "UPDATE " + tableName + " T SET T.Value = 'Hoge' WHERE T.Name = 'Uri'";

ではどうでしょうか?

> SELECT文は同じ値(Name,Value)で動いているのですが……。

とはいえ、Value とか Name などというようなフィールド名は避けるべきだと思いますよ。
それと、Parameters.Add を使うようにしましょう。

返信ありがとうございます。

> CommandText = "UPDATE " + tableName + " T SET T.Value = 'Hoge' WHERE T.Name = 'Uri'";

上記の通り、変更を加えてみました。
結果、エラーは取れて正常にファイルが更新されました。

> とはいえ、Value とか Name などというようなフィールド名は避けるべきだと思いますよ。
> それと、Parameters.Add を使うようにしましょう。

すぐにでもParameters.Addを利用したものに処理を変更したいと思います。

どうも本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板