我有一个带有SQL Server CE 3.5数据库的Winforms应用程序。我想进行UPDATE
查询,为此我需要SELECT
查询。
这是我写的:
string command1 = "SELECT Column1, Column2, Column3 FROM Table1";
string command2 = "UPDATE Table2 SET Column2 = @var2, Column3 = @var3 WHERE Column1 = @var1";
using (SqlCeCommand cmd1=new SqlCeCommand(command1, connection))
{
SqlCeDataReader reader;
reader = cmd1.ExecuteReader();
while (reader.Read())
{
int var1 = (int)reader[0];
int var2 = (int)reader[1];
string var3 = (string)reader[2];
SqlCeCommand cmd2= new SqlCeCommand (command2, connection);
cmd2.ExecuteReader();
}
}
我收到错误
缺少参数。参数序数= 3
答案 0 :(得分:1)
您的第二个命令(command2
)中有三个参数 - 但您从未定义这些参数,也没有设置任何值< / strong>供他们使用!
试试这段代码:
string command1 = "SELECT Column1, Column2, Column3 FROM Table1";
string command2 = "UPDATE Table2 SET Column2 = @var2, Column3 = @var3 WHERE Column1 = @var1";
using (SqlCeCommand cmd1 = new SqlCeCommand(command1, connection))
{
// define your "cmd2" here, once, before the loop
SqlCeCommand cmd2 = new SqlCeCommand (command2, connection);
// define the parameters
cmd2.Parameters.Add("@var1", SqlDbType.Int);
cmd2.Parameters.Add("@var2", SqlDbType.Int);
cmd2.Parameters.Add("@var3", SqlDbType.VarChar, 100);
SqlCeDataReader reader = cmd1.ExecuteReader();
while (reader.Read())
{
int var1 = (int)reader[0];
int var2 = (int)reader[1];
string var3 = (string)reader[2];
// set the *values* of the parameters
cmd2.Parameters["@var1"].Value = var1;
cmd2.Parameters["@var2"].Value = var2;
cmd2.Parameters["@var3"].Value = var3;
cmd2.ExecuteNonQuery();
}
}
答案 1 :(得分:0)
您没有使用var1,var2和var3变量。 我猜他们代表第二个查询参数,所以你应该像这样使用它们:
SqlCeParameter param = new SqlCeParameter("@var1", SqlDbType.Int);
command.Parameters.Add(param);