Sqlite - Insert给出错误 - 无效的强制转换异常 - "从'DateTime'到'Int32'的无效强制转换."

Nic*_*ick 5 c# sqlite ado.net

var idParam = new SQLiteParameter("@idParam", SqlDbType.Text) { Value = insertData.ID };
var userIdParam = new SQLiteParameter("@userIdParam", SqlDbType.VarChar) { Value = insertData.Uid };
var applicationNameParam = new SQLiteParameter("@applicationNameParam", SqlDbType.VarChar) { Value = insertData.Application };
var eventNameParam = new SQLiteParameter("@eventNameParam", SqlDbType.VarChar) { Value = insertData.EventName };
var clientTokenParam = new SQLiteParameter("@clientTokenParam", SqlDbType.VarChar) { Value = insertData.ClientToken };
var versionParam = new SQLiteParameter("@versionParam", SqlDbType.VarChar) { Value = insertData.Version };
var dateTimeParam = new SQLiteParameter("@dateTimeParam", SqlDbType.DateTime) { Value = insertData.DateTime };
var dataParam = new SQLiteParameter("@dataParam", SqlDbType.Text) { Value = insertData.Data };

SQLiteCommand command = new SQLiteCommand("INSERT INTO DATAOUT (id, uid, application, eventname, clienttoken, version, datetime, data)" +
    " VALUES ('@idParam','@userIdParam','@applicationNameParam','@eventNameParam','@clientTokenParam','@versionParam',@dateTimeParam,'@dataParam')",Connection);
command.Parameters.Add(idParam);
command.Parameters.Add(userIdParam);
command.Parameters.Add(applicationNameParam);
command.Parameters.Add(eventNameParam);
command.Parameters.Add(clientTokenParam);
command.Parameters.Add(versionParam);
command.Parameters.Add(dateTimeParam);
command.Parameters.Add(dataParam);

command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

我正在尝试调试此INSERT,但我没有太多运气.为什么sqllite试图将我的日期时间转换为int?数据库模式需要一个datetime对象.有没有办法在插入命令文本发送到数据库时看到它?

以下是我要插入的类型:

public string Uid { get; private set; }
public string Application { get; private set; }
public string EventName { get; private set; }
public string ClientToken { get; private set; }
public string Version { get; private set; }
public DateTime DateTime { get; private set; }
public string Data { get; private set; }
Run Code Online (Sandbox Code Playgroud)

以下是插入的示例:

INSERT INTO DATAOUT(id,uid,application,eventname,clienttoken,version,datetime,data)VALUES('00000000-0000-0000-0000-000000000000','123abcd','My Application','','Test Client' '1.0.0', '1/1/2000',"[{ "ID": "alpha_123", "问题": "ronunciations在前古典倍或在非阁楼方言有关DET","回答":"nnish"},{"id":"beta_456","问题":"官方文件,例如法律","答案":"或修改"},{"id":"gamma_789","问题":"略微保持或修改以适应希腊语音;因此,"回答":"阁楼",{"id":"delta_098","问题":"5号末期的阁楼发音的构建一个","答案":""},{"id":"epsilon_076","问题":"不同的风格变体,下降的尾巴要么直接向下","回答":"整群" },{"id":"zeta_054","问题":"当它开始一个单词时呼吸粗糙.另一个变音使用","回答":"其他dia"}}')

最后一个值是JSON字符串.dateTime字段显然是问题(第7个参数).对于上面的例子,我刚刚添加了文本'1/1/2011'.代码通过参数构造插入.datetime参数在调试器中具有有效日期.

当我检查参数"dateTimeParam"时,调试器显示dbType = Int32.那是怎么回事?

UPDATE

删除了insert语句中参数周围的引号.它导致插入字符串文字@paramname.谢谢!