【发布时间】:2014-08-08 15:29:06
【问题描述】:
我在使用 Xamarin 更新 android 应用程序中的 sqlite 数据库中的记录时遇到问题。这是创建表:
CREATE TABLE [tickets] (key ntext, json ntext, last_refreshed text)
这是 UPDATE 语句:
UPDATE [tickets] SET [json]=@json AND [last_refreshed] = datetime('now') WHERE [key] = @key
这是我编写数据的代码。我已经确认“数据”和“键”变量中的数据是所需的数据,并且 TICKET_TABLE_UPDATE 常量是正在使用的数据,但是由于某种原因,当我从 sqlite 数据库中读取记录时,有一个“ 0”在json字段中,并且last_refreshed字段尚未更新。有什么想法吗?
public void WriteTicket(JiraTicket ticket) {
int count = 0;
using (SqliteCommand com = con.CreateCommand()) {
com.CommandText = TICKET_TABLE_COUNT;
com.Parameters.AddWithValue("@key", ticket.Key);
count = int.Parse(com.ExecuteScalar().ToString());
}
using (SqliteCommand com = con.CreateCommand()) {
if (count > 0) {
com.CommandText = TICKET_TABLE_UPDATE;
} else {
com.CommandText = TICKET_TABLE_INSERT;
}
String data = ticket.JSON;
String key = ticket.Key;
com.Parameters.AddWithValue("@key", key);
com.Parameters.AddWithValue("@json", data);
com.ExecuteNonQuery();
}
【问题讨论】:
-
如果有什么不同的话,写的字符串相当长,可能有几十万个字符。
-
这是使用 mono.data.sqlite
-
sqlite 的最大文本长度是数百万,所以你应该没问题。也许它与您的数据类型有关。我认为不支持 ntext。
-
如果不支持,那为什么要建表呢?并且初始插入有效,它只在更新语句上写入 0。
-
不支持我的意思更像是文档中没有定义。我使用 SQLite 的经验表明,它在数据类型方面非常灵活。但是您使用的是 SQLite 没有明确说明如何处理的数据类型,因此结果可能无法预测。
标签: c# android sqlite xamarin xamarin.android