- PR -

INSERTのVALUESの値に閉じていない括弧が存在する場合

1
投稿者投稿内容
Taito
常連さん
会議室デビュー日: 2005/07/21
投稿数: 43
投稿日時: 2006-02-10 20:20
VB.NETでデータベースはMSSQLで開発中です。

MSSQLのあるテーブルにレコード追加する所でエラーが出て困っております。

現象としましては
INSERT INTO TEST_TABLE (a, b)
VALUES ('ABCD','YUI(O')
のようにVALUESに閉じていない括弧が存在する場合です。
中途半端な括弧が存在しない場合や、ちゃんと括弧を閉じている場合は
問題なく追加できます。
尚、MSSQL上で直接SQL文を打てば閉じていない括弧があっても
問題なく追加できます。

データベースへの接続方法はSqlClientを使用しております。

他の括弧で閉じたりするのでしょうか?

閉じていない括弧を入れないようにするという回答以外で、
何か対応策をご存知の方がいらっしゃいましたら、アドバイスお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-02-10 22:43
SQLインジェクション対策もかねてSqlParamaterを使用するようにしましょう。
Taito
常連さん
会議室デビュー日: 2005/07/21
投稿数: 43
投稿日時: 2006-02-13 10:11
引用:

burton999さんの書き込み (2006-02-10 22:43) より:
SQLインジェクション対策もかねてSqlParamaterを使用するようにしましょう。



burton999さん、アドバイス感謝致します。
SqlParameterを調べて使用してみたところ、問題なく実行することが
できるようになりました。ありがとうございました。
これでスペースなどにも対応できるようになるのですね。
大変勉強になりました。


例えばこんな感じ…で。

Imports System.Data.SqlClient
・・・・・・
Dim cn As New SqlClient.SqlConnection
Dim cmd As New SqlClient.SqlCommand

cn.ConnectionString = "Server=" & DB_SERVER & ";Initial Catalog=" & DB_CATALOG & ";User ID=" & DB_USER & ";Password=" & DB_PASSWORD & ";"

cn.Open()
cmd.Connection = cn

cmd.CommandText ="INSERT INTO TEST_TABLE (a, b) VALUES ('ABCD',@Sqlp_b)"

cmd.Parameters.Clear()
cmd.Parameters.Add(New SqlClient.SqlParameter("@Sqlp_b", SqlDbType.VarChar,5))
cmd.Parameters("@Sqlp_b").Value = 'YUI(O'
cmd.ExecuteNonQuery()
cn.Close()
1

スキルアップ/キャリアアップ(JOB@IT)