我能夠將TIMESTAMP作爲一個字符串插入到我的表中,但是當我將它讀出來時,程序產生了一個錯誤,提示「字符串未被識別爲有效的DateTime」。如何在SQLite中使用SQL語句插入和檢索TIMESTAMP字段?
下面是我如何在表格中插入我的值。
sqlstr := 'INSERT INTO ALARMS (ALARMTIME) VALUES ("'+DateTime.Now.ToString+'");';
cnn := new SQLiteConnection('Data Source=AlarmLog.s3db');
cnn.Open;
var mycommand := new SQLiteCommand(cnn);
mycommand.CommandText := sqlstr;
var info := mycommand.ExecuteNonQuery;
cnn.Close;
這裏是我讀出來的。
sqlstr := 'SELECT * from ALARMS';
var dt := new DataTable;
cnn := new SQLiteConnection('Data Source=AlarmLog.s3db');
cnn.Open;
var mycommand := new SQLiteCommand(cnn);
mycommand.CommandText := sqlstr;
var reader := mycommand.ExecuteReader;
dt.Load(reader); <---------------------Here is where I am getting the error, "String was not recognized as a valid DateTime."
reader.Close;
cnn.Close;
我知道爲什麼我收到了錯誤,但爲什麼我不能插入TIMESTAMP的日期和時間,而不是字符串或文本類型。如果你在我的SQL查詢中注意到,我在DateTime.Now.ToString語句周圍有引號。這是它接受我的SQL語句的唯一方式。
[SQLite沒有存儲類預留用於存儲日期和/或時間。](http://www.sqlite.org/datatype3.html) – Andomar 2012-07-26 19:51:59
@Andomar,基本上這意味着您必須將datetime轉換爲字符串並將其傳遞給您表。爲了檢索,您需要將其作爲字符串讀取並轉換爲實際的日期時間值。 – ThN 2012-07-26 20:14:16
是的,當然,如果你選擇了SQLite和.NET都能理解的格式,它也會有所幫助。 'yyyy-MM-ddTHH:mm:ss'是一種通用格式。 – Andomar 2012-07-27 05:45:34