c# - C#:Dbreader 值未在循环中更新
问题描述
我正在阅读 sql 数据库,但我的 dbreader 值没有更新。有什么方法可以清除值并在循环时获取新值?
for (int i = 0; i < schdlrefno.Count; i++)
{
reschdl = schdlrefno[i];
reSQL = " SELECT schdl, techid, appdatetime, section FROM dbo.name WHERE schdl_refno ='" + reschdl + "' ";
OdbcCommand DbCommand = conn.CreateCommand();
DbCommand.CommandText = reSQL;
DbCommand.CommandTimeout = 180;
OdbcDataReader DbReader = DbCommand.ExecuteReader();
if (DbReader.Read())
{
APPDT = "";
SCHEDULEREFNO = DbReader.GetString(DbReader.GetOrdinal("schdl"));
TECHID = DbReader.GetString(DbReader.GetOrdinal("techid"));
APPDT = DbReader.GetString(DbReader.GetOrdinal("appdatetime"));
SECTIONNAME = DbReader.GetString(DbReader.GetOrdinal("section"));
}
OdbcConnection reconn;
console.Writeline(APPDT);
}
解决方案
这里仍然存在问题,但它修复了我上面两条评论中的五个问题中的四个,并展示了一种更好的代码结构方式:
string reSQL = "SELECT schdl, techid, appdatetime, section FROM dbo.name WHERE schdl_refno = @reschdl";
// Do NOT try to re-use the same connection object throughout your app!
using (var conn = new OdbcConnection("connection string here"))
using (var cmd = new OdbcCommand(reSQL, conn))
{
//Make sure the type and length here match the column. This info isn't in the question, so I had to guess.
var p = cmd.Parameters.Add("@reschdl", OdbcType.VarChar, 80);
conn.Open()
foreach(var reschdl in schdlrefno)
{
p.Value = reschdl;
var reader = cmd.ExecuteReader();
if (reader.Read())
{
//We're still overwriting these on each iteration!
APPDT = "";
SCHEDULEREFNO = reader.GetString(reader.GetOrdinal("schdl"));
TECHID = reader.GetString(reader.GetOrdinal("techid"));
APPDT = reader.GetString(reader.GetOrdinal("appdatetime"));
SECTIONNAME = reader.GetString(reader.GetOrdinal("section"));
}
Console.Writeline(APPDT);
}
}
推荐阅读
- android - 以编程方式重新约束约束布局中的视图
- git - 将索引与过滤结果一起显示到标准输出
- angular - NGXS Selector observable 未获得新状态
- objective-c - 动态创建包含按钮的视图——约束呢?
- c++ - 是否有一些输入条件可以让“cin >> someStringValue”评估为“假”?
- python - 如何在 Keras/tf2.0 自定义损失函数中收集与真实标签不对应的 y_pred 元素?
- hdl - 我已经使用原语为 JK 触发器编写了 verilog 代码
- c# - 在winform上获取按钮的父级
- python - 我该怎么做才能保持绿色和透明度?
- web-worker - 使用 std::thread 时无法在“WorkerGlobalScope”上执行“importScripts”