保存来自 select 查询的值,然后在更新查询 SQL Server CE 中使用它们
Save values from select query then use them in update query SQL Server CE
我有一个带有 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();
}
}
我收到一个错误
A parameter is missing. Parameter ordinal=3
您没有使用 var1、var2 和 var3 变量。
我猜它们代表第二个查询参数,所以你应该像这样使用它们:
SqlCeParameter param = new SqlCeParameter("@var1", SqlDbType.Int);
command.Parameters.Add(param);
您的第二个命令 (command2
) 中有 三个 参数 - 但您从未 定义 这些参数,也没有您设置任何 值 供他们使用!
试试这个代码:
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();
}
}
我有一个带有 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();
}
}
我收到一个错误
A parameter is missing. Parameter ordinal=3
您没有使用 var1、var2 和 var3 变量。 我猜它们代表第二个查询参数,所以你应该像这样使用它们:
SqlCeParameter param = new SqlCeParameter("@var1", SqlDbType.Int);
command.Parameters.Add(param);
您的第二个命令 (command2
) 中有 三个 参数 - 但您从未 定义 这些参数,也没有您设置任何 值 供他们使用!
试试这个代码:
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();
}
}