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

初歩的な質問でしたらすみません。。。
VB6でSQLServer2000のDBを操作しています。

入力フォームの「名称」欄に「'」「,」半角のアポストロフィやカンマの入力をすると、
SQLのテーブルへ書き込み時にエラーとなってしまいます。
「名称」のため、半角の「'」「,」は禁止にして、全角の「’」「,」は入力可能にしたいです。全角半角の判別可能なのでしょうか?

フォームで[登録]ボタンを押した時に「名称」欄に「'」「,」が含まれているかのチェックをしたいのですが、
「'」「,」文字をどの様に記述してチェックをすればよろしいのでしょうか。

どなたかご存知の方ご教授いただけたらと思い質問させていただきました。
どうかよろしくお願いいたしますm(_ _)m

A 回答 (3件)

こういうことでしょうか?


Private Sub Command1_Click()
Dim i As Integer

i = InStr(Text1.Text, "'")
If i > 0 Then MsgBox "「'」があります。"
Text1.Text = ""
Text1.SetFocus


End Sub
    • good
    • 0

んと、エラーになる・ならないは横に置いといて。


そもそも「名称」という欄に入る値として半角の「'」や「,」は業務ルール上、正当ですか? それとも不正ですか?
もし「エラーになるから禁止文字にしたい」というのであれば、登録の方法を変えれば禁止にしなくて済みます。

恐らくプログラムの中で動的に「UPDATE ~」なり「INSERT ~」の SQL 文字列を完全に組み立てているのでしょうが、そのやり方を変更すれば先の半角文字を登録に使用することが可能になります。

具体的には ADO の Command オブジェクトと Parameter オブジェクトを使って更新します。
これならば更新したい値は Parameter オブジェクトに格納されるので、「SQLインジェクション」と呼ばれる、SQL Server を攻撃するような呪文にも強くなります。

MSDN : ADO の Command オブジェクト
http://msdn.microsoft.com/library/ja/jpado260/ht …

MSDN : ADO の Parameter オブジェクト
http://msdn.microsoft.com/library/ja/jpado260/ht …
    • good
    • 0

入力受付後、その名称の文字列の中の、問題の半角記号を、全角に置換(Replace)してしまえばどうですか。

    • good
    • 0

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


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