[英]ASPX VB.Net OleDb Insert Parameter into Query
這是我第一次在VB.Net中編寫aspx頁面。
我遇到的問題是該參數沒有進入cmd.Parameters.Add
行中的查詢。
我得到的錯誤是
沒有為一個或多個必需參數給出值。
在線上
reader = cmd.ExecuteReader;
我努力了:
PARAMETERS
添加到查詢的頂部; []
; OleDbType.Integer
更改為OleDbType.SmallInt
或OleDbType.BigInt
我知道查詢可以正常工作,因為我可以將其放入MS Access,並且在添加參數后即可運行。 但是當我在Visual Studio中運行它時卻沒有。
Dim reader As OleDbDataReader
Dim cmd As OleDbCommand
Dim SQL As String = "PARAMETERS [@ID] Long; " &
"SELECT tblField.FieldName, " &
"tblField.FieldCaption, " &
"tblField.FieldMinCharNum, " &
"tblField.FieldMaxCharNum, " &
"tblField.FieldDefault, " &
"tblField.FieldSection, " &
"tblField.FirstQuestion, " &
"tblField.FieldDescription, " &
"tblField.FieldRegEx " &
"FROM tblField " &
"WHERE tblField.FieldID = [@ID];"
cmd = New OleDbCommand(SQL, Connection.Connection)
cmd.Parameters.Add("[@ID]", OleDbType.Integer).Value = ID
reader = cmd.ExecuteReader
我只是通過將參數預先插入到SQL字符串中來使其工作。 但我想使此功能適用於頁面上尚未編寫的其他區域。 用戶輸入返回到數據庫中,以便對輸入進行清理。
謝謝大家。
OLEDB不使用@來標識參數。 它用 ? 並按照它們在SQL中出現的順序分配參數,將您的代碼修改為...
Dim reader As OleDbDataReader
Dim cmd As OleDbCommand
Dim SQL As String = "SELECT tblField.FieldName, " &
"tblField.FieldCaption, " &
"tblField.FieldMinCharNum, " &
"tblField.FieldMaxCharNum, " &
"tblField.FieldDefault, " &
"tblField.FieldSection, " &
"tblField.FirstQuestion, " &
"tblField.FieldDescription, " &
"tblField.FieldRegEx " &
"FROM tblField " &
"WHERE tblField.FieldID = ?"
cmd = New OleDbCommand(SQL, Connection.Connection)
cmd.Parameters.Add("?", OleDbType.Integer).Value = ID
reader = cmd.ExecuteReader
我不明白為什么您提到的SQL是您要從SQL Query檢索數據,還是要將數據插入表中。
您使用Dim cmd As OleDbCommand
意思是用於將輸入值插入數據庫,如下面的示例代碼所示。
query = "INSERT INTO ds.students (ID,NAME,PIC)" & _
"VALUES (@ID,@NAME,@PIC);"
Dim cmd As OracleCommand = New OracleCommand(query, con)
cmd.Parameters.Add("@ID", Convert.ToInt32(TextBox1.Text))
cmd.Parameters.Add("@NAME", Convert.ToString(TextBox2.Text))
cmd.Parameters.Add("@PIC", arrImage)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
你也可以嘗試
Using cn As OracleConnection = New OracleConnection(connectionString)
cn.Open()
Using cmd As OracleCommand = New OracleCommand()
Const sql As String = "Insert into test_table (val1, val2) values (:var1, :var2)"
cmd.Connection = cn
cmd.Parameters.Add(New OracleParameter("var1", TxtField1.Text))
cmd.Parameters.Add(New OracleParameter("var2", TxtField2.Text))
cmd.CommandText = sql
cmd.ExecuteNonQuery()
End Using
End Using
如果要將值插入數據庫,請根據給定的示例更改代碼。
希望這會幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.