我有一个数据库,其中包含一个日期时间列。当使用SQL Server时,我可以使用以下代码从数据库中读取日期时间值:
SqlCommand getdate = new SqlCommand("SELECT * FROM EMPinfo WHERE id = @employeeId", connect);
getdate.Parameters.AddWithValue("@employeeId", listViewEmployee.SelectedItems[0].SubItems[2].Text);
getdate.Connection = connect;
connect.Open();
SqlDataReader readList = getdate.ExecuteReader(CommandBehavior.CloseConnection);
while (readList.Read())
{
lblEmpDob.Text = ((DateTime)readList["dob"]).ToString("d");
}
将代码更改为与SQLite一起运行后:
SQLiteConnection connect = new SQLiteConnection(@"Data Source=quotevodata.db;");
SQLiteCommand getlistname = new SQLiteCommand("SELECT * FROM EMPinfo WHERE id = @employeeId", connect);
getlistname.Parameters.AddWithValue("@employeeId", listViewEmployee.SelectedItems[0].SubItems[2].Text);
getlistname.Connection = connect;
connect.Open();
SQLiteDataReader readList = getlistname.ExecuteReader(CommandBehavior.CloseConnection);
while (readList.Read())
{
lblEmpDob.Text = ((DateTime)readList["dob"]).ToString("d");
}
我一直收到以下错误:"字符串未被识别为有效的日期时间。"
我尝试了不同的变量组合和声明,但是没有效果。从SQLite数据库读取DateTime值的正确配置是什么?
4条答案
按热度按时间li9yvcax1#
SQLite没有内置DateTime对象,而是将其存储为Text、真实的或Int值。
从您的错误中,您可以推断它输出为文本;根据SQLite文档,其格式应为“YYYY-MM-DD HH:MM:SS.SSS”
有多种方法可以将其解析为DateTime对象,但我将使用RegEx:
文件:http://www.sqlite.org/datatype3.html
z9smfwbn2#
感谢您的回答,我最终按照建议将INSERT语句更改为SQLite格式,使其正常工作:
之后,我使用以下语句读取日期并将其格式化为可用的字符串,效果非常好:
我真的很感谢你的帮助。
c0vxltue3#
你为什么转换2倍?
如果你在SQLite中有一个日期列,提供者可以为你管理它。你可以直接插入为DateTime,读取为DateTime。
4zcjmb1e4#
这感觉有点笨拙,但这是我能想到的唯一解决方案。它只创建一个新列,将所有DateTime格式的值复制到新列,并删除旧的时间字符串列。