gpt4 book ai didi

c# - 使用 Mysqldatareader 访问行

转载 作者:行者123 更新时间:2023-11-29 10:59:03 26 4
gpt4 key购买 nike

有没有办法访问和分配高列的第 (i+1) 个或第 (I-1) 个值?

我的代码如下:

public static List<db1> Read_DB1(string date, MySqlConnection conn)
{
string sql = "select * from table2replica where Date=\'" + date + "\'"; // loads for a particular date


List<db1> db1List = new List<db1>();
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
if (reader != null)
{
while (reader.Read())
{
db1 db1Obj = new db1();
db1Obj.Symbol = reader["Stock"].ToString();
db1Obj.Date = Convert.ToDateTime(reader["Date"]);
db1Obj.Open = Convert.ToDouble(reader["Open"]);
db1Obj.High = Convert.ToDouble(reader["High"]);
db1Obj.Low = Convert.ToDouble(reader["Low"]);
db1List.Add(db1Obj);

}
}
}

我应该使用以下方式引用并分配下一行的值:

db1Obj.HighNextRow = Convert.ToDouble(reader["High"]+1)

db1Obj.PreviousRow = Convert.ToDouble(reader["High"+1])

最佳答案

DbDataReader 只能向前移动,并且在任何给定循环中它仅了解当前记录。您不能向后跳转读取上一条记录的字段,也不能向前跳转读取下一条记录的字段。

但是,您可以自己跟踪之前的记录,同时保持 db1Obj 的前一个实例处于事件状态。

db1 db1Obj = null;
db1 prevObj = null;
while (reader.Read())
{
db1Obj = new db1();
db1Obj.Symbol = reader["Stock"].ToString();
db1Obj.Date = Convert.ToDateTime(reader["Date"]);
db1Obj.Open = Convert.ToDouble(reader["Open"]);
db1Obj.High = Convert.ToDouble(reader["High"]);
db1Obj.Low = Convert.ToDouble(reader["Low"]);
if(prevObj != null)
{
prevObj.HighNextRow = db1Obj.High;
db1Obj.PrevRow = prevObj.High;
}
prevObj = db1Obj;
db1List.Add(db1Obj);
}
if(prevObj != null && db1Obj != null)
{
prevObj.HighNextRow = db1Obj.High;
db1Obj.PrevRow = prevObj.High;
}

关于c# - 使用 Mysqldatareader 访问行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42561560/

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