Oledb 参数类型问题
本文关键字:问题 类型 参数 Oledb | 更新日期: 2023-09-27 17:56:23
我正在尝试从文本框中选择文本并将其作为 oledb 命令的参数之一传入,但出现此错误消息;
"OleDbParameterCollection 仅接受非空的 OleDbParameter 类型对象,不接受字符串对象"
这是我的代码:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=EstateAgent.mdb;Persist Security Info=True";
string sqlStatement = "INSERT INTO `house` (`ID`, `County`, `Town`, `Village`, `PropertyType`, `Bedrooms`, `Price`, `EstateAgent`, `Keyword`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
OleDbConnection myConnection = new OleDbConnection(connectionString);
OleDbCommand myAccessCommand = new OleDbCommand(sqlStatement);
// System.Data.OleDb.OleDbParameter param;
myAccessCommand.Connection = myConnection;
for (int i = 0; i < 9; i++)
{
myAccessCommand.Parameters.Add(textBoxControlArray[i].Text);
}
myConnection.Open();
myAccessCommand.ExecuteNonQuery();
myConnection.Close();
您看到的任何其他观点将不胜感激,这是我在 c# 中使用数据库的第一项工作。
请注意,我有一个包含 9 个文本框的控制框数组,必须填充所有这些文本框才能执行这部分代码。
谢谢
基本上,
您是在需要OleDBParameter对象的方法中添加一个字符串对象。
myAccessCommand.Parameters.Add(textBoxControlArray[i].Text);
你可能想做类似的事情
myAccessCommand.Parameters.Add(new OleDBParameter(textBoxControlArray[i].Name, textBoxControlArray[i].Text);
在这里,每个文本框的名称应与原始查询中指定的参数相同。
可以使用:
string sqlStatement = "INSERT INTO house (ID, County, Town, Village, PropertyType, Bedrooms, Price, EstateAgent, Keyword) VALUES (@ID, @County, @Town, @Village,@PropertyType, @Bedrooms, @Price, @EstateAgent, @Keyword)";
myAccessCommand.Parameters.AddWithValue("@price",txtPrice.Text);
在你的 for 循环中使用它。
for (int i = 0; i < 9; i++)
{
OleDbParameter op = new OleDbParameter("OP", OleDbType.VarChar, 50);
op.Value = textBoxControlArray[i].Text;
myAccessCommand.Parameters.Add(op);
}