0

テーブルの特定の列からすべてのデータを取得するメソッドがあります。現在、このメソッドは、データベース内のフィールドが「string」または「int」(GetInt32 に変更することにより) 形式である場合に機能しますが、日付フィールドは好きではありませんが、私の方法は次のとおりです。

public static void getDates()
{
    //create the database connection
    OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\ev_mgr.mdb");

    //create the command object and store the sql query
    OleDbCommand actorCommand = new OleDbCommand("select Issue_Time2 from Events", aConnection);
    try
    {
        aConnection.Open();

        //create the datareader object to connect to table
        OleDbDataReader aReader = actorCommand.ExecuteReader();

        //Iterate throuth the database
        while (aReader.Read())
        {
            timeList.Add(aReader.GetString(0)); // Error occurs here

        }

        //close the reader
        aReader.Close();

        //close the connection Its important.
        aConnection.Close();
    }

    //Some usual exception handling
    catch (OleDbException e)
    {
        Console.WriteLine("Error: {0}", e.Errors[0].Message);
    }


    foreach (string time in timeList)
    {
        Console.WriteLine(time);
    }
}

次の行で例外がスローされます。

timeList.Add(aReader.GetString(0));

エラー:

指定されたキャストは無効です。

列の日付/フィールドの例は次のとおりです。

02/05/2012 15:52:45
4

2 に答える 2

2

試す

timeList.Add(aReader.GetDateTime(0).ToString());
于 2012-05-03T11:44:06.723 に答える
0

使用する

timeList.Add(DateTime.Parse(aReader.GetString(0)).ToString(yourdateformat));

あなたのdateformatがどこにある"dd/mm/yyyy hh:MM:ss"か、またはあなたが望むものなら何でも

于 2012-05-03T11:44:31.810 に答える