gpt4 book ai didi

c# - 在读取行期间更新数据库列

转载 作者:可可西里 更新时间:2023-11-01 08:29:30 25 4
gpt4 key购买 nike

每次读取一行时,我都需要更改数据库表中的列值。具体来说,在读取行之后我必须设置列 SENT=1(默认情况下,在读取之前,值为 0)。

我的代码是:

var sqlCommand = "SELECT * FROM detector_output WHERE SENT=0";
var Command = new MySqlCommand(sqlCommand, connection);
MySqlDataReader reader = Command.ExecuteReader();
while (reader.Read())
{
var ident = reader.GetString(0);
var SENSOR_TYPE = reader.GetString(1);
var MSG_NAME = reader.GetString(2);
var DATA_NAME = reader.GetString(3);
var VALUE = reader.GetString(4);
var TIMESTAMP = reader.GetString(5);

var connectionUP = new MySqlConnection(cs);
connectionUP.Open();
var sqlCommandUPDATE = "UPDATE detector_output SET SENT=1 WHERE ID=ident";
var CommandUpdate = new MySqlCommand(sqlCommandUPDATE, connectionUP);
CommandUpdate.ExecuteReader();

我遇到的错误是:

unknown column 'ident' in where clause ...

最佳答案

您不使用 ident 作为查询中的变量。您将其定义为 ID=ident,这就是为什么您的提供者感到困惑并且它认为您实际上尝试过滤您的 ID 列值等于 ident 列值。

如果 ident 是一个字符怎么办?然后,它会被定义为 ID = 'ident',不是吗?

为它定义一个参数,然后添加它的值。

var sqlCommandUPDATE = "UPDATE detector_output SET SENT=1 WHERE ID = @ident";
var CommandUpdate = new MySqlCommand(sqlCommandUPDATE, connectionUP);
CommandUpdate.Parameters.AddWithValue("@ident", ident);

也可以使用 using statement处理您的连接、命令和读者。

关于c# - 在读取行期间更新数据库列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com