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;
我试过:
- 在查询的顶部添加
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 字符串即可使其正常工作。但我想让这项工作适用于尚未编写的页面的其他区域。用户输入返回数据库的位置,因此输入被清理。
谢谢大家。
我不明白你为什么提到 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
这是我第一次在 VB.Net 中编写 aspx 页面。
我遇到的问题是参数没有进入 cmd.Parameters.Add
.
我收到的错误是
No value given for one or more required parameters.
上线
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 字符串即可使其正常工作。但我想让这项工作适用于尚未编写的页面的其他区域。用户输入返回数据库的位置,因此输入被清理。
谢谢大家。
我不明白你为什么提到 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