使用C#在Access数据库中获取特定单元格值

时间:2013-04-28 13:05:27

标签: c# database ms-access

在我的数据库中,我有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();

    }
}

}

2 个答案:

答案 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列)。