1

私のデータベースには、time、strike、vol の 3 つの列があります。たとえば、2 列目の 3 番目の値を取得できません。どの列の最初の値しか取得できません。

私が望むのは、たとえば 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();

    }
}

}

4

2 に答える 2

0

その列のインデックスが 2 であることを意味する 3 番目の値が必要な場合は、以下を試してください。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 に答える