ASPX VB.Net OleDb 将参数插入查询

ASPX VB.Net OleDb Insert Parameter into Query

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

我遇到的问题是参数没有进入 cmd.Parameters.Add.

行的查询

我收到的错误是

No value given for one or more required parameters.

上线

reader = cmd.ExecuteReader;

我试过:

我知道查询有效,因为我可以将其放入 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 字符串即可使其正常工作。但我想让这项工作适用于尚未编写的页面的其他区域。用户输入返回数据库的位置,因此输入被清理。

谢谢大家。

我不明白你为什么提到 SQL 你是从 SQL 查询中检索数据还是要将数据插入 table。

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

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

希望对您有所帮助。

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