2016-12-21 30 views
-4

VB.NETでテキストボックスのデータをAccessデータベースに入力するプログラムがあります。ここではサンプル画像です:VB 2010エラー(INSERT INTO)構文エラー

enter image description here

これは私が使用していたコードであり、それは私にエラーを与える:

m = TextBox1.Text 
b = "'" + TextBox2.Text + "'" 
x = "'" + TextBox3.Text + "'" 
d = TextBox4.Text 
n = "'" + TextBox5.Text + "'" 
Dim s2 As String 
s2 = "insert into users1 (num , name1 , pass , add , phone) " & " values (" + m + " , " + n + " , " + b + " , " + x + " , " + d + ") " 
Dim cmd2 As New OleDbCommand(s2, con) 
cmd2.ExecuteNonQuery() 

答えて

1

あなたのSQLが失敗する理由は、「追加」は予約語であるということです。つまり、角カッコで囲むことなく使用することはできません - [追加]。あなたは...ので、これらのいずれかが動作する、

Using oleCmd As New OleDbCommand("Insert Into users1 (num,name1,pass,[add],phone) values (@num,@name1,@pass,@add,@phone)", con) 
    oleCmd.Parameters.Add("@num", OleDbType.Integer).Value = Textbox1.Text 
    oleCmd.Parameters.Add("@name1", OleDbType.VarChar).Value = Textbox2.Text 
    oleCmd.Parameters.Add("@pass", OleDbType.VarChar).Value = Textbox3.Text 
    oleCmd.Parameters.Add("@address", OleDbType.VarChar).Value = Textbox4.Text 
    oleCmd.Parameters.Add("@phone", OleDbType.Integer).Value = Textbox5.Text 
    oleCmd.ExecuteNonQuery() 
End Using 

Using oleCmd As New OleDbCommand("Insert Into users1 (num,name1,pass,[add],phone) Values (?,?,?,?,?)", con) 
    oleCmd.Parameters.AddWithValue("?", Textbox1.Text) 
    oleCmd.Parameters.AddWithValue("?", Textbox2.Text) 
    oleCmd.Parameters.AddWithValue("?", Textbox3.Text) 
    oleCmd.Parameters.AddWithValue("?", Textbox4.Text) 
    oleCmd.Parameters.AddWithValue("?", Textbox5.Text) 
    oleCmd.ExecuteNonQuery() 
End Using 

注クエリをparameteriseする必要があり、上記のように、データ型を使用すると、挿入しようとしているものと一致しない場合、それは失敗しますので、あなたは、テキストを挿入しようとした場合numまたはphoneで失敗します。入力を検証し、テキストボックステキストを使用するのではなく、変換することが必要です。

関連する問題