C# SQlite写入0而不是我的数据

C# SQlite写入0而不是我的数据,c#,android,sqlite,xamarin,xamarin.android,C#,Android,Sqlite,Xamarin,Xamarin.android,我在使用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 这是我写数据的代码。我已经确认数据和关

我在使用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数据库读取记录时,json字段中有一个0,并且上次刷新的字段没有被更新。有什么想法吗

    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();
        }

用逗号替换update语句中的AND,以分隔字段更新

如果有任何区别,则写入的字符串相当长,可能有几十个字符。这是使用mono.data.sqlitesqlite的最大文本长度为数百万,因此您应该可以。也许这与您的数据类型有关。我认为不支持ntext。如果不支持,那么为什么要创建表?初始插入工作正常,它只在update语句中写入0。我使用SQLite的经验表明,它在数据类型方面非常灵活。但是您使用的数据类型SQLite并没有明确说明如何处理它,所以结果可能是不可预测的。