C# 无法识别SQLite时间戳格式
我使用SQLite的ADO.NET数据提供程序与SQLite db通信。我有一个带有datetime字段的表,其中包含时间戳作为值 当我尝试在我的c#应用程序中获取此值时,我收到FormatException,它表示“字符串未被识别为有效的日期时间。” 我使用以下代码获取变量:C# 无法识别SQLite时间戳格式,c#,.net,sqlite,C#,.net,Sqlite,我使用SQLite的ADO.NET数据提供程序与SQLite db通信。我有一个带有datetime字段的表,其中包含时间戳作为值 当我尝试在我的c#应用程序中获取此值时,我收到FormatException,它表示“字符串未被识别为有效的日期时间。” 我使用以下代码获取变量: command = new SQLiteCommand(cnn); command.CommandText = "SELECT * FROM Library WHERE id=" + id.ToString() + ";
command = new SQLiteCommand(cnn);
command.CommandText = "SELECT * FROM Library WHERE id=" + id.ToString() + ";";
reader = command.ExecuteReader();
while (reader.Read())
{
IDataRecord record = (IDataRecord)reader;
library.dateCreation = (UInt32)record[6];
}
// Call Close when done reading.
reader.Close();
dateCreation值的类型为UInt32。如何正确读取此值?也许db的格式不对?但是我读到sqlite datetime字段可以包含时间戳值。dateCreation是
UInt32
,您会得到datetime
异常??是的,因为在我编写时,数据库字段的类型是datetime,我无法更改它,因为它是外部的。当我试图呼吁记录[6]不要将参数直接注入查询时,会出现异常。这是目前最常见的安全攻击的来源。注意:在这种情况下这不是问题(id.ToString()
不能生成坏代码,假设id
是int
)。但这是一个非常坏的习惯,当存在一个非常简单明了的替代方案时,没有理由这样做。使用select*并希望第6列可能是我想要的,这也不在~secure~一边。