保存选择查询中的值,然后在更新查询 SQL Server CE 中使用它们

Posted

技术标签:

【中文标题】保存选择查询中的值,然后在更新查询 SQL Server CE 中使用它们【英文标题】:Save values from select query then use them in update query SQL Server CE 【发布时间】:2015-06-19 07:43:26 【问题描述】:

我有一个带有 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

【问题讨论】:

我想使用while中的那些 【参考方案1】:

您在第二个命令 (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();
     

【讨论】:

【参考方案2】:

您没有使用 var1、var2 和 var3 变量。 我猜它们代表第二个查询参数,所以你应该像这样使用它们:

SqlCeParameter param = new SqlCeParameter("@var1", SqlDbType.Int); command.Parameters.Add(param);

在此处查看官方文档:https://msdn.microsoft.com/fr-fr/library/system.data.sqlserverce.sqlcecommand.parameters(v=vs.100).aspx

【讨论】:

以上是关于保存选择查询中的值,然后在更新查询 SQL Server CE 中使用它们的主要内容,如果未能解决你的问题,请参考以下文章

SQL中,我想把SQL查询分析器查询出来的结果,导出到EXCEL表格,求各位大侠指点。

选择一个值,然后在 c# 的同一查询中更新该值

SQLSERVER如何在数据库里根据某个字段,查出该表名字

如何增加(更新)SQL 表中的单元格?在查询中

DAO、ORM 和查询

SQL Server 中的选择性更新