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

MDBへのSQL書込み

  • 題名: MDBへのSQL書込み
  • 著者: いるか
  • 日時: 2005/03/22 14:58:30
  • ID: 9974
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP .net2000 access2000]
分類:[.NET]

お世話になります Accessファイルのフィールドへ書き込み
したいのですが以下のままではA、B、C、Dがそのまま入ります
フォーム上のTEXTBOXの値を代入したいのですが記述はどうすればよいでしょうか?

oleCmd = New OleDb.OleDbCommand("INSERT INTO "テーブル名" VALUES ('A','B','C','D')", oleCn)

oleCmd = New OleDb.OleDbCommand("INSERT INTO "テーブル名" VALUES ('txtA.text','B','C','D')", oleCn)
とやっても、txtA.textの文字が入ってしまいます・・・
''や""で工夫してもうまくいきません よろしくお願いします
  • 題名: ・・・
  • 著者: (報告)
  • 日時: 2005/03/22 15:20:31
  • ID: 9979
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
お礼もできない方へは、お答えできません。
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=9824&rev=&no=0
> oleCmd = New OleDb.OleDbCommand("INSERT INTO "テーブル名" VALUES ('A','B','C','D')", oleCn)

txtA.textとはなんでしょうか?
もしテキストボックスなのであれば...

 dim moo as string = INSERT INTO "テーブル名" VALUES ('(MOO)','B','C','D')"
 moo=replace(moo,"(MOO)",txtA.text)'警告!SQLインジェクション対策なし
 oleCmd = New OleDb.OleDbCommand(moo,oleCn)

なんてどうでしょうか?
1行でズバリ!と書こうとしなければ
いいのではないでしょうか?
ポイントは replace です。SQL文字列の一部分を置換しています。

このままではSQLインジェクションの問題がありますので
ご自身で調べて解決してみてください。
ちょっとだけ間違ったので1行目だけ差し替えます。

■No9983に返信(Mooさんの記事)
>
> dim moo as string = "INSERT INTO テーブル1 VALUES ('(MOO)','B','C','D')"
返信ありがとうございます
思考錯誤の結果こんな風にかかなければならなかったのですね
replaceははじめてみました 早速試してみます

oleCmd = New OleDb.OleDbCommand("INSERT INTO T_LogAssy VALUES ('" & _
lblPc.Text & "','" & _
lblTime.Text & "','" & _
lblPc.Text & "','" & _
lblGood.Text & _
"')", oleCn)
解決済み!
■No9987に返信(いるかさんの記事)
> 返信ありがとうございます
> 思考錯誤の結果こんな風にかかなければならなかったのですね
> replaceははじめてみました 早速試してみます
>
> oleCmd = New OleDb.OleDbCommand("INSERT INTO T_LogAssy VALUES ('" & _
> lblPc.Text & "','" & _
> lblTime.Text & "','" & _
> lblPc.Text & "','" & _
> lblGood.Text & _
> "')", oleCn)

えっと、

>>このままではSQLインジェクションの問題がありますので
>>ご自身で調べて解決してみてください。

と書いておきましたが、対策は不要なのでしょうか?
たとえば、lblpc.text="'"のとき、このINSERTは失敗するはずです。
なるほどそうですね
途中で記述が切れてしまいますね

> >>このままではSQLインジェクションの問題がありますので
> >>ご自身で調べて解決してみてください。
>
> と書いておきましたが、対策は不要なのでしょうか?
> たとえば、lblpc.text="'"のとき、このINSERTは失敗するはずです。
>

エスケープ('')でにげるのはなんかいやですねぇ
入力値チェック以外にご存知の方法がありますでしょうか?
■No9991に返信(いるかさんの記事)
> なるほどそうですね
> 途中で記述が切れてしまいますね
>
>>>>このままではSQLインジェクションの問題がありますので
>>>>ご自身で調べて解決してみてください。
>>
>>と書いておきましたが、対策は不要なのでしょうか?
>>たとえば、lblpc.text="'"のとき、このINSERTは失敗するはずです。
>>
>
> エスケープ('')でにげるのはなんかいやですねぇ
> 入力値チェック以外にご存知の方法がありますでしょうか?

すでに先駆者の情報がまとまっていますので、

SQLインジェクション

で調べてみてください。
有用な情報にアクセスできると思います。
  • 題名: Re[7]: MDBへのSQL書込み
  • 著者: いるか
  • 日時: 2005/03/22 18:53:49
  • ID: 9998
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
了解! 調べてみますありがとうございました
解決済み!

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