Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法识别SQLite时间戳格式_C#_.net_Sqlite - Fatal编程技术网

C# 无法识别SQLite时间戳格式

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() + ";

我使用SQLite的ADO.NET数据提供程序与SQLite db通信。我有一个带有datetime字段的表,其中包含时间戳作为值

当我尝试在我的c#应用程序中获取此值时,我收到FormatException,它表示“字符串未被识别为有效的日期时间。”

我使用以下代码获取变量:

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~一边。