【发布时间】:2013-04-15 20:33:29
【问题描述】:
我正在开发一个使用 SQLite 数据库的 C# WPF 项目。我正在尝试从 sqlite 数据库中的表中检索数据并添加到数据集中,以便可以将数据集添加到数据网格的项目源中。其中一列是 DateTime 列,但出现以下错误:
String was not recognized as a valid DateTime.
下面是我如何检索数据
private DataSet getAlarmsForSqlite()
{
DataSet ds = new DataSet();
try
{
using (ConnectSQLiteDatabase db = new ConnectSQLiteDatabase(dbPassword))
{
string query = "SELECT * FROM alarms ORDER BY date";
SQLiteDataAdapter da = new SQLiteDataAdapter(query, db.conn);
da.Fill(ds);
}
}
catch (SQLiteException ex)
{
Console.WriteLine("Failed to get alarms. Sqlite Error: {0}", ex.Message);
return null;
}
return ds;
}
下面是表的创建语句
CREATE TABLE `alarms` (`id` int(11) NOT NULL, `date` datetime NOT NULL,
`type` varchar(50) NOT NULL,
`message` mediumtext NOT NULL,
`level` varchar(45) NOT NULL,
`page` varchar(500) NOT NULL,
`acknowledged` char(1) DEFAULT '0', PRIMARY KEY (`id`))
感谢您提供的任何帮助。
【问题讨论】:
-
我不确定,但名为
date的那一列有点可疑。可以尝试用方括号封装吗? -
不确定您的意思,怀疑方括号以什么方式实现以及实现什么
-
我怀疑这被解释为关键字,我的意思是
SELECT * FROM alarms ORDER BY [date],实际上SQLite 想要在关键字周围加上双引号,但为了兼容性,方括号被接受并且易于编写sqlite.org/lang_keywords.html -
啊好吧,试过了,但还是没有运气。我不认为顺序是发生日期时间错误的原因
-
您的代码看起来绝对合法,也许该列中有一些无效的日期时间。您可以尝试使用 DataReader 进行调试并遍历您的数据,直到出现错误。