[英]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.