プロが教える店舗&オフィスのセキュリティ対策術

以下の記述に誤りはございますでしょうか??
よろしくお願いします。

String strSql=UPDATE yoshitable SET No=263 Name=Sun Key=178WHERE Key=178;

どうしてもKey=178あたりにエラーが出ます。
また、エラーの正確な場所を特定する上手な方法はありますでしょうか?ご存知であれば是非教えていただきたく思います。m(__)m

A 回答 (4件)

>INSERT INTO table (No,Name,sn) VALUES('677','sqp','760')


>という記述で新しいレコードが挿入できています。
>(Keyは予約語なのでsnに置き換えています。)

列名は「key」にしたかったが、予約語と重なるので「sn」で定義したということですか???

予約語と同じ列名を使いたい場合、「`」で囲み、
`列名`とすれば使用できます。

文字の定数なら、「'」で囲み、'値'のように指定します。
数値なら、「'」で囲みません。
→MySQLはエラーにしてない。

普通、updateのsetの指定は、

set 列名1=値1,列名2=値2,列名3=値3

のようにカンマで区切ります。

UPDATE yoshitable SET No=263,Name='Sun', sn=178 WHERE sn=178

表定義を貼り付けてくれた方が、適切な回答ができます。

この回答への補足

できました!
snに置き換えてといいつつもKeyを使っていたことと
sn=178 とWHEREの間に余計なカンマ(,)が入っていたことが問題でした。
バージョンによって記述が異なることも勉強になりました。
ありがとうございます。(*´▽`*)

補足日時:2006/06/06 11:31
    • good
    • 0

プログラム言語をはっきりさせましょう。


一般に代入するなら文字列をダブルコーテーションで
テーブル名やフィールド名をバックコーテーションで、
要素をシングルコーテーションでくくります

String strSql="UPDATE `yoshitable` SET `No`='263' `Name`='Sun' `Key`='178' WHERE `Key`='178';";

この回答への補足

すいません。
言語はJavateaです。
Java+MySQLという組みあわせで進めております。
deleteやinsertはうまくいったのですがsetだけは
うまくいきません。
例えば
INSERT INTO table (No,Name,sn) VALUES('677','sqp','760')という記述で新しいレコードが
挿入できています。
(Keyは予約語なのでsnに置き換えています。)
これと同じようにバックコーテーションで囲ってみましたがうまくいかないのです。よろしくお願いします。o( _ _ )o

補足日時:2006/06/06 10:32
    • good
    • 0

どうもこんにちは。




んじゃぁー。。

UPDATE yoshitable SET No=263,Name=Sun,Key=178 WHERE Key=178;
とかはどうなんでしょうか。

String strSql
というのが気になりますが。。。
何か言語を使われていてDBの操作。などでしょうかね?

場合によっては、
UPDATE yoshitable SET No='263',Name='Sun',Key='178' WHERE Key='178';

としなければならない場合とかもありますが。。。
    • good
    • 0
この回答へのお礼

上記の通り、カンマの使い方を間違っていたようです。
参考になりました。
ありがとうございます。m<__>m

お礼日時:2006/06/06 11:37

UPDATE yoshitable SET No=263, Name=Sun WHERE Key=178



とかじゃ駄目ですかね?

この回答への補足

ご回答ありがとうござ来ます。
しかし、3つの変数の全てを変更したい場合も
あるので、keyも入れておきたいのです。
上記は書き方がまずかったです。
もとのKeyと変更後のKeyは不変の場合もあるし
変更される場合もあります。

補足日時:2006/06/06 09:38
    • good
    • 0

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