プロが教えるわが家の防犯対策術!

題名のとおりなのですが、データベースに更新するデータに
シングルクォーテーションを含む文字があって、更新時にエラーとなってしまいます。
更新する文字列内にシングルクォーテーションの数が奇数あれば、さらに文字列にシングルクォーテーションを追加して、更新しようとしたんですが、ダメでした。

何か参考になるサイト、解決策をご存知の方、宜しくお願いします。

環境:
OS:WinXPSP2
言語:VB6SP6
DB:SQLServer2000

A 回答 (3件)

シングルクオテーションはエスケープしないとダメですよ。


「'」は「''」と2つ続けます。
    • good
    • 2
この回答へのお礼

シングルクォーテーションを含む文字列を更新する時は、シングルクォーテーションを2つ続けた状態にして更新するとは、知りませんでした。無事に更新できました。勉強になりました。ありがとうございます。

お礼日時:2007/06/30 23:16

エラーがでるのはUPDATE命令ですか?それともINSERT命令ですか?



まず、テーブル「TBL」項目「VALUE」に「A'B」を入れると仮定して
UPDATE TBL
SET VALUE = 'A''B'
にしてもエラーになるということですよね?
逆にデータの「'」文字を外した場合でもエラーになりませんか?

エラーの内容からすると単純な文法ミスだと思われるのですが…
よくやるミスとしては、
1).一番最後の項目なのにもかかわらず「,」をつけてしまっている。
UPDATE TBL
SET ~ , VALUE = 'A''B', WHERE~
~~~
2).一番最後の項目がWHEREとくっついている。
UPDATE TBL
SET ~ , VALUE = 'A''B'WHERE~
~~~
3).全角空白が混入している。
UPDATE TBL
SET ~ , VALUE = 'A''B' WHERE~
~~~
当てはまりませんか?

Executeメソッドにブレークポイントし生成されたSQL文の変数を直接SQLServerのクエリーマネージャ(でしたっけ?)で発行してエラ-になるか確認されてみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

すみません。シングルクォーテーションを2つ続けた状態にして更新する事を知りませんでした。無事、解決しました。いろいろ考えて頂き、ありがとうございました。

お礼日時:2007/06/30 23:18

文字数がオーバーフローしているだけでは?


代入しようとしている項目の最大桁数を確認されてはどうでしょうか?

この回答への補足

文字数オーバーによるエラーではないです。

すみません。エラー内容を記載しておいたほうが良かったですね。
例えば、「A'B」をデータベースに更新しようとしてみた時のエラーは、「'B'の近くに無効な構文があります。」と出ます。

更新方法としては、ADOでコネクションのExecuteメソッドにSQL文を設定して更新しています。

補足日時:2007/06/30 21:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A