在我的数据库中,我有3列:time,strike和vol。我无法获得第二列的第三个值。我只能获得任何列的第一个值。
我想要的是将第二列的第三个值存储在另一个变量中,然后进行一些计算。换句话说,我需要在指定列的特定位置获取几个值。
感谢任何帮助。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\mike\\Documents\\Database1.mdb;";
OleDbConnection MyConn = new OleDbConnection(ConnStr);
MyConn.Open();
string StrCmd = "SELECT * FROM Table1";
OleDbCommand Cmd = new OleDbCommand(StrCmd, MyConn);
OleDbDataReader ObjReader = Cmd.ExecuteReader();
string VolT0;
string VolT1;
string VolK0;
string VolK1;
if (ObjReader != null)
{
while (ObjReader.Read())
{
VolT0 = ObjReader.GetValue(1).ToString();
VolK0 = ObjReader.GetValue(2).ToString();
//VolK1 = ObjReader.GetValue(2).ToString(); //here is the problem: here I need to get the 3rd value in this column but it's not working !
Console.WriteLine(VolT0 + " - " + VolK0 + "\n");
}
}
ObjReader.Close();
MyConn.Close();
}
}
}
答案 0 :(得分:0)
尝试下面,如果您需要第3个值,则意味着该列的索引为2.因为您正在使用while循环并将值分配给每一行的相同字段,这些值将按新行值覆盖字段值。如果只需要获取特定的行值,则可以使用where子句并仅过滤该记录。
if (ObjReader != null)
{
while (ObjReader.Read())
{
VolT0 = !ObjReader.IsDBNull(0)?ObjReader.GetValue(0).ToString():string.Empty;
VolK0 = !ObjReader.IsDBNull(1)?ObjReader.GetValue(1).ToString():string.Empty;
VolK1 = !ObjReader.IsDBNull(2)?ObjReader.GetValue(2).ToString():string.Empty;
}
}
答案 1 :(得分:0)
OleDbDataReader
逐个读取数据库行 。
while (ObjReader.Read())
{
VolT0 = ObjReader.GetValue(0).ToString(); //time column value
VolK0 = ObjReader.GetValue(1).ToString(); //strike column value
VolK1 = ObjReader.GetValue(2).ToString(); //vol column value
Console.WriteLine("time = {0}, strike = {1}, vol = {2}", VolT0 , VolK0, VolK1 );
}
如果您想 第二列的第三个值 ,您可以在counter = 0
语句中设置while
,最后增加,当计数器为VolK0
时,调用2
值(第2列)。