1

在我的数据库中,我有 3 列:时间、罢工和卷。例如,我无法获得第二列的第三个值。我只能获得任何列的第一个值。

我想要的是例如将第二列的第三个值存储在另一个变量中,然后进行一些计算。换句话说,我需要在指定列的特定位置获取几个值。

任何帮助表示赞赏。

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();

    }
}

}

4

2 回答 2

0

试试下面,如果你需要第三个值,这意味着该列的索引是 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;
       }
   }
于 2013-04-28T13:17:36.493 回答
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 = 0while语句中设置a,最后增加,VolK0当计数器为时调用该值(第二列)2

于 2013-04-28T13:20:09.377 回答