1

我正在使用 SQL 数据库编写一个小程序。表名是StudentInfo。我需要知道以下的 SQL 代码

for (n=0; n<nRows; n++) {
  string sql1="update StudentInfo set Position=" + n + " where <this has to be the row number>";
}

nRows是行数。

如何获取上述代码的行号?

4

2 回答 2

0

为了完成这项任务,您需要创建一个存储过程或构建一个实际接受参数的查询。这将帮助您在之间传递变量,您的连接方法实际上会导致错误或容易受到SQL 注入攻击

非参数 SQL 命令:

using(SqlConnection sqlConnection = new SqlConnection("Database Connection String Here"))
{
     string command =
           "UPDATE Production.Product " +
           "SET ListPrice = ListPrice * 2 " +
           "WHERE ProductID IN " +
               "(SELECT ProductID  " +
                "FROM Purchasing.ProductVendor" +
                "WHERE BusinessEntityID = 1540);" +

     using (SqlCommand sqlCommand = new SqlCommand(command, sqlConnection))
     {
           int execute = command.ExecuteNonQuery();
           if( execute <= 0)
           {
               return false;
           }
           else
           {
               return true;
           }
     }
}

该方法本质上是创建一个连接,运行我们的SQL 命令,然后我们使用一个整数来验证它确实确实成功地运行了我们的命令。如您所见,我们只是使用SQL来运行我们的命令。

另一件需要注意的重要事情是,您不能创建带有更新的子查询;你必须创建一个更新,然后运行一个选择作为子查询来磨练更具体的数据,这样你就可以跨表等等。

另一种选择是使用基于参数的查询,您可以在SQLApplication之间传递变量。

我不会为此发布代码,因为我相信您编写了 C# 循环来演示您希望SQL为您做什么。仅更新特定行;基于特定标准。

如果您可以发布其他信息,我会更乐意为您提供帮助。但我只是要发布我相信你正在努力完成的事情。如我错了请纠正我。

于 2013-06-04T16:58:59.213 回答
0

最好的方法是在数据库中创建一个存储过程并使用您的代码将相关信息传递给服务器

于 2013-06-04T15:38:12.250 回答