2017-02-17 24 views
0

Webフォームからデータを取り出し、ms-accessデータベースに配置しようとしています。 (これまでの)aspx.vbページ内にあるコードは、以下に記載されているが、私は実行したときには、cmd.ExecuteNonQuery()asp.netを使用してWebフォームデータをms-accessに挿入する

アップスローされる「は、一つ以上の必要なパラメータに指定された値なしを。」

なぜですか?コードは何を読むべきですか?

Protected Sub RegButton_Click(sender As Object, e As EventArgs) Handles RegButton.Click 
    Dim con As New OleDb.OleDbConnection 
    Dim cmd As New OleDb.OleDbCommand 
    Dim Sql As String 

    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Users.accdb;Persist Security Info=True" 

    con.Open() 

    Sql = "INSERT INTO Users.Personnel (FirstName, LastName, Address, Email, Username, UserPassword) VALUES (@first, @last, @addr, @email, @uname, @pwd) " 
    cmd = New OleDb.OleDbCommand(Sql, con) 
    cmd.ExecuteNonQuery() 
    MsgBox("saved") 

    cmd.Parameters.AddWithValue("@first", FirstBox.Text) 
    cmd.Parameters.AddWithValue("@last", LastBox.Text) 
    cmd.Parameters.AddWithValue("@addr", AddressBox.Text) 
    cmd.Parameters.AddWithValue("@email", EmailBox.Text) 
    cmd.Parameters.AddWithValue("@uname", UserBox.Text) 
    cmd.Parameters.AddWithValue("@pwd", PwdBox.Text) 

    con.Close() 

End Sub 

答えて

1

パラメータを渡す前にクエリを実行することはできません。

con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Users.accdb;Persist Security Info=True" 

con.Open() 

Sql = "INSERT INTO Users.Personnel (FirstName, LastName, Address, Email, Username, UserPassword) VALUES (@first, @last, @addr, @email, @uname, @pwd) " 
cmd = New OleDb.OleDbCommand(Sql, con) 


cmd.Parameters.AddWithValue("@first", FirstBox.Text) 
cmd.Parameters.AddWithValue("@last", LastBox.Text) 
cmd.Parameters.AddWithValue("@addr", AddressBox.Text) 
cmd.Parameters.AddWithValue("@email", EmailBox.Text) 
cmd.Parameters.AddWithValue("@uname", UserBox.Text) 
cmd.Parameters.AddWithValue("@pwd", PwdBox.Text) 
cmd.ExecuteNonQuery() 
MsgBox("saved") 
con.Close() 

End Subの

+0

感謝アミット。私はそれを見つけていないためにシンプルに感じる簡単な解決策! –

関連する問題