2012-03-24 11 views
1

ASP.NETとMicrosoft Access 2003のデータでVB.NETを使用すると、Webフォームからdb.mdbのテーブルにデータを入力しようとしています'ユーザー'。MS Access 2003のユーザーテーブルへのINSERTの構文エラー

私はこのコードを試してみました:

Protected Sub btnCreateAccount_Click(sender As Object, e As System.EventArgs) Handles btnCreateAccount.Click 

    Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\WebSite3\db.mdb;User Id=admin;Password=;") 

    Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO USER (Name, Surname, Username, Country, TelNo, Password, Address) VALUES (?, ?, ?, ?, ?, ?, ?)", conn) 

    If txtPass.Text = txtCPass.Text Then 

     cmd.Parameters.Add("@Name", OleDbType.VarChar, 255).Value = txtName.Text 
     cmd.Parameters.Add("@Surame", OleDbType.VarChar, 255).Value = txtSurname.Text 
     cmd.Parameters.Add("@Address", OleDbType.VarChar, 255).Value = txtAddress.Text 
     cmd.Parameters.Add("@Country", OleDbType.VarChar, 255).Value = txtCountry.Text 
     cmd.Parameters.Add("@Username", OleDbType.VarChar, 255).Value = txtUsername.Text 
     cmd.Parameters.Add("@Password", OleDbType.VarChar, 255).Value = txtPass.Text 
     cmd.Parameters.Add("@TelNo", OleDbType.Integer).Value = txtTelNo.Text 

     Try 

      conn.Open() 
      cmd.ExecuteNonQuery() 
      conn.Close() 

     Catch ex As OdbcException 
      Throw ex 
     Finally 
      conn.Close() 
      lblAccount.Visible = True 


     End Try 

    End If 

End Sub 

をしかし、それは私にエラーメッセージを返します:問題が原因である可能性があります理由に任意の提案を

enter image description here

を?

+0

'Catch'句を削除することを強くお勧めします。 'Throw Ex'行が例外のソースに見えるようにスタックトレースを駄目にします。 –

答えて

3

UserおよびPasswordは予約済みのキーワードです。あなたが遭遇する、次のエラーのため、

Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO [USER] (Name, Surname, Username, Country, TelNo, [Password], Address) VALUES (?, ?, ?, ?, ?, ?, ?)", conn) 

その後:名前を変更、またはクエリ内の名前の周りに角括弧を使用してパラメータをクエリで指定されていないため、パラメータオブジェクトでParametersコレクションは、クエリで使用されているのと同じ順序で追加する必要があります。

+0

ありがとうございました!もう1つだけです。{{"}"条件式のデータ型が一致しません。 "}' cmd.ExecuteNonQuery() 'に何が起こっているのでしょうか? – Brian

+0

@Brian:パラメータの順序が正しいことを確認しましたか?パラメータタイプがデータベースタイプに対応していることを確認しましたか?電話番号に数字だけが含まれていることを確認したので、整数に変換することは可能ですか? – Guffa

関連する問題