2

我有从 sql 查询填充的数据集,像这样

cmd_sql.CommandText = " SELECT BrDok " +
                      " FROM ordersstavke " +
                      " WHERE SifParFil = '" + rw_mat["sifskl_kor"] + "'";

MySqlDataAdapter sql_adapter = new MySqlDataAdapter(cmd_sql);
DataSet ds_dok = new DataSet("ordersstavke");
sql_adapter.Fill(ds_dok);

现在我想从数据集中提取值以进行 sql 更新,就像这个

myQuery = "UPDATE ordersstavke " +
          "SET BrDok = '" + rw_mat["brdok"] + "', " +
          "SifParFil = '" + rw_mat["sifskl_kor"] + "', " +
          "WHERE BrDok = " + ds_dok.Tables["ordersstavke"].Rows[0]["BrDok"] + "'";

我试过这个ds_dok.Tables["ordersstavke"].Rows[0]["BrDok"]但我得到了一个错误,我正在考虑做这样的事情

string BrDok;
BrDok  = ds_dok.["BrDok"].ToString();

但是什么都没有,如何提取该 BrDok 或将其放入程序中?

谢谢前面!

4

4 回答 4

1

尝试这个

ds_dok.Tables[0].Rows[0]["BrDok"]
于 2012-05-07T10:10:26.963 回答
1

做了

 DataSet ds_dok = new DataSet("ordersstavke");
 sql_adapter.Fill(ds_dok,"BrDok");

然后使用

ds_dok.Tables["BrDok"].Rows[0]["BrDok"].ToString()
于 2012-05-07T09:56:30.820 回答
0

只是对 sql 命令的一个小提示。您应该使用 sql-parameters 来防止 sql-injection。

于 2012-05-07T10:33:29.530 回答
0

如果您为数据集类提供字符串参数,那么它将是数据集名称而不是数据表名称。并且数据库中没有您为数据集提供的名称的表,因此请在填充数据集时提供它。写一些像下面这样的东西。

DataSet ds_dok = new DataSet();
sql_adapter.Fill(ds_dok,"ordersstavke");

并且您可以在代码部分中编写所有剩余的代码。

你的第二个更新查询有一些语法错误,如下所示

myQuery = "UPDATE ordersstavke " +           "SET BrDok = '" + rw_mat["brdok"] + "', "
 +           "SifParFil = '" + rw_mat["sifskl_kor"] + "', " +           "WHERE BrDok 
 = '" + ds_dok.Tables["ordersstavke"].Rows[0]["BrDok"] + "'";

您忘记在where子句中添加一个逗号。

于 2012-05-07T10:06:46.903 回答