テーブルの特定の列からすべてのデータを取得するメソッドがあります。現在、このメソッドは、データベース内のフィールドが「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