ASPX VB.Net oleDb 将参数插入到查询中



这是我第一次用 VB.Net 编写aspx页面。

我遇到的问题是该参数不会进入cmd.Parameters.Add行的查询。

我得到的错误是

没有为一个或多个必需参数提供值。

在线

reader = cmd.ExecuteReader;

我试过:

  • 如我所示,在查询顶部添加PARAMETERS;
  • 删除和添加参数周围的[];
  • OleDbType.Integer更改为OleDbType.SmallIntOleDbType.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查询中检索数据还是要将数据插入表中。

您的使用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

如果要将值插入到数据库中,请根据给定的示例更改代码。

希望这对您有所帮助。

最新更新