我正在使用 MonoDroid 将数据层从我的 Window Mobile 应用程序移植到 Android 和 iOS。我的数据层在 SQL SERVER、SQL CE 和 Windows SQLite 上运行并经过很好的测试。
我在我的 Android 解决方案中为我的项目创建了类库并导入了我的所有代码。我创建了一个新的 DbEngine 实现来调整 Mono 上 SQLite 的查询。
当我通过诸如“插入[用户]值('xx','hello',null)'之类的文本插入表格时,它工作正常,我可以看到affectedRows> 0。但是,当我尝试使用命令插入时参数,我在 GUID 列中得到不正确的值,请看截图。
// Creating the parameter
public override DbParameter CreateParameter(string name, object value)
{
DbParameter result;
if (value is byte[])
{
var length = (value as Array).Length;
result = new SqliteParameter(name, DbType.Binary, length) { Value = value};
}
else if (value is string && ((string)value).Length > 4000)
{
var length = ((string)value).Length;
result = new SqliteParameter(name, DbType.String, length) { Value = value };
}
else if (value is Guid)
{
result = new SqliteParameter(name, DbType.Guid) { Value = value }; // up to here, I can see that the GUID has the right value and the SQLiteParameter is created properly.
}
else
{
result = new SqliteParameter(name, value);
}
return result;
}
这是作为参数传递时插入行的方式