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

C# 使用C在Access数据库中获取特定的单元格值#,c#,database,ms-access,C#,Database,Ms Access,在我的数据库中,我有3列:time、strike和vol。例如,我无法获得第2列的第3个值。我只能得到任何列的第一个值 我想要的是将第二列的第三个值存储在另一个变量中,然后进行一些计算。换句话说,我需要在指定列的特定位置获取两个值 感谢您的帮助 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string ConnS

在我的数据库中,我有3列:time、strike和vol。例如,我无法获得第2列的第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();

    }
}

}

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

OleDbDataReader
逐个读取数据库行


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

请定义“不工作”的含义。
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 );
}