C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: INSERT文


(過去ログ 72 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■41770 / inTopicNo.1)  INSERT文
  
□投稿者/ MON (1回)-(2009/09/30(Wed) 11:21:58)

分類:[.NET 全般] 

まだ初心者なため…初歩的なことで行き詰まっております。
どなたかご教授ください!!

Accessのテーブルにデータをインサートしたいのですが、

SQL = "INSERT INTO tbl_sub(No, 連番, 曲名, 演奏時間, etc) " _
& "VALUES(" & ComboBox1.Text & ", " & TextBox1.text & ", '" & TextBox2.Text & "', " _
& "'" & TextBox3.Text & "', '" & TextBox4.Text & "')"

と記述すると、「INSERT INTOステートメントの構文エラーです」というエラーが出てしまいます。

ちなみに、テーブルのNoフィールドと連番フィールドは数値型、
曲名フィールドと演奏時間フィールドはテキスト型、etcフィールドはメモ型です。

また、別のテーブルにインサートする構文

SQL = "INSERT INTO tbl_main(入力日, アーティスト名, タイトル名, 全曲数, 全演奏時間, " _
& "種別, 備考) VALUES(#" & TextBox1.Text & "#, '" & TextBox2.Text & "', " _
& "'" & TextBox3.Text & "', " & TextBox4.Text & ", '" & TextBox5.Text & "', " _
& "'" & ComboBox1.Text & "', '" & TextBox6.Text & "')"

ではインサートすることができました。

こちらのテーブルの入力日フィールドは日付/時刻型、
アーティスト名フィールドとタイトル名フィールドはテキスト型、
全曲数フィールドは数値型、全演奏時間フィールドと種別フィールドはテキスト型、
備考フィールドはメモ型です。


開発言語はVB2005です。よろしくお願いします。
引用返信 編集キー/
■41775 / inTopicNo.2)  Re[1]: INSERT文
□投稿者/ Ase (1回)-(2009/09/30(Wed) 12:23:25)
No41770 (MON さん) に返信
> SQL = "INSERT INTO tbl_sub(No, 連番, 曲名, 演奏時間, etc) " _
> & "VALUES(" & ComboBox1.Text & ", " & TextBox1.text & ", '" & TextBox2.Text & "', " _
> & "'" & TextBox3.Text & "', '" & TextBox4.Text & "')"
>
上記のようなINSERT文だと、
曲名や演奏時間、etcのTextBoxにシングルコーテーション(')が入っているとエラーになりますね。

引用返信 編集キー/
■41776 / inTopicNo.3)  Re[2]: INSERT文
□投稿者/ たくボン (225回)-(2009/09/30(Wed) 12:35:44)
No41775 (Ase さん) に返信
> ■No41770 (MON さん) に返信
>>SQL = "INSERT INTO tbl_sub(No, 連番, 曲名, 演奏時間, etc) " _
>> & "VALUES(" & ComboBox1.Text & ", " & TextBox1.text & ", '" & TextBox2.Text & "', " _
>> & "'" & TextBox3.Text & "', '" & TextBox4.Text & "')"
>>
> 上記のようなINSERT文だと、
> 曲名や演奏時間、etcのTextBoxにシングルコーテーション(')が入っているとエラーになりますね。
>

ACCESSの場合だと日本語と英語の列名が混在する場合、列名を明示的に"[]"で囲んだ方が良かったんじゃなかったかな?
ご飯食べながらだから、検証はしてないけど。
Noやetcってキーワードじゃなかったと思うから、[]で囲んでみてください。
引用返信 編集キー/
■41780 / inTopicNo.4)  Re[1]: INSERT文
□投稿者/ 魔界の仮面弁士 (1328回)-(2009/09/30(Wed) 13:58:48)
No41770 (MON さん) に返信
> SQL = "INSERT INTO tbl_sub(No, 連番, 曲名, 演奏時間, etc) " _

列名 No があやしいです。この名前は予約語になっています。

Jet SQL においては、No とは False を意味する「Yes/No 型」のキーワードです。
それぞれの列名を、[No] のように角括弧で囲んで記述してみてください。
引用返信 編集キー/
■41785 / inTopicNo.5)  Re[2]: INSERT文
□投稿者/ MON (2回)-(2009/09/30(Wed) 15:42:04)
No41776(たくボン さん)に返信
No41780(魔界の仮面弁士 さん)に返信

遅くなってしまい、申し訳ありません。
おっしゃられたように、Noとetcに[]をつけたら通りました。
ありがとうございました。

No41775(Ase さん)に返信
はい…。確かにシングルコーテーションがついているとエラーが出ました。
どのようにしたら良いでしょうか?
引用返信 編集キー/
■41831 / inTopicNo.6)  Re[3]: INSERT文
□投稿者/ たくボン (232回)-(2009/10/01(Thu) 00:24:34)
2009/10/01(Thu) 09:16:10 編集(投稿者)
2009/10/01(Thu) 09:16:04 編集(投稿者)

No41785 (MON さん) に返信
> ■No41775(Ase さん)に返信
> はい…。確かにシングルコーテーションがついているとエラーが出ました。
> どのようにしたら良いでしょうか?

エスケープ処理をかましてください。

URL間違えてました・・・。

http://www.accessclub.jp/bbs2/0026/beginter08656.html

引用返信 編集キー/
■41836 / inTopicNo.7)  Re[4]: INSERT文
□投稿者/ 774RR (400回)-(2009/10/01(Thu) 08:32:02)
単純に文字列結合で SQL 文を作ると SQL インジェクション脆弱性となるので要注意。
エスケープするなら正しいタイミングで処理してね。
(サニタイズ言うなキャンペーン中)
引用返信 編集キー/
■41843 / inTopicNo.8)  Re[5]: INSERT文
□投稿者/ zz (1回)-(2009/10/01(Thu) 11:59:13)
確か連番フィールドは、INSERT文に記述しないと思ったけど
記述するとINSERTエラーになった気がした
引用返信 編集キー/
■41879 / inTopicNo.9)  Re[6]: INSERT文
□投稿者/ MON (3回)-(2009/10/02(Fri) 09:33:52)
遅くなって申し訳ありません。
教えていただいたように、エスケープ処理を行ったらエラーは出なくなりました。

どうもありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -