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

本文关键字:单元格 获取 Access 数据库 使用 | 更新日期: 2023-09-27 18:11:08

在我的数据库中,我有3列:时间,罢工和vol.我无法获得例如第二列的第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();
    }
}

}

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

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

如果你想第二列的第三个值,你可以在你的while语句中设置一个counter = 0,最后增加,当计数器为2时调用VolK0值(第二列)

尝试下面,如果你需要第三个值,这意味着该列的索引是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;
       }
   }