C# Xamarin在使用SQLite更新布尔值时遇到问题
我正在尝试用Xamarin表单创建一个简单的Notes应用程序。我有一个入口,一个日期,然后是一个开关,以确定笔记是否完成 创建新便笺时,插入数据一切正常。但是当我试图更新一个注释时,Switch元素总是以“false”的形式插入,其他数据与更新一起工作。我不知道可能是什么问题 以下是更新注释的方法:C# Xamarin在使用SQLite更新布尔值时遇到问题,c#,sqlite,xaml,xamarin,xamarin.forms,C#,Sqlite,Xaml,Xamarin,Xamarin.forms,我正在尝试用Xamarin表单创建一个简单的Notes应用程序。我有一个入口,一个日期,然后是一个开关,以确定笔记是否完成 创建新便笺时,插入数据一切正常。但是当我试图更新一个注释时,Switch元素总是以“false”的形式插入,其他数据与更新一起工作。我不知道可能是什么问题 以下是更新注释的方法: public void UpdateNote(string _name, string _note, string _date, bool _done, int noteId) {
public void UpdateNote(string _name, string _note, string _date, bool _done, int noteId)
{
_sqlconnection.Query<Notes>("UPDATE [Notes] SET Name='" + _name + "', Note='" + _note + "', Date='" + _date + "', Done='" + _done + "' WHERE [ID]='" + noteId + "'");
}
SQLite将布尔存储为0/1:
var _doneInt = _done : 1 : 0;
public void UpdateNote(字符串名称、字符串注释、字符串日期、bool完成、int注释ID)
{
var _doneInt=_done:1:0;
_sqlconnection.Query(“更新[Notes]集合名称=””+“+”,注释=”+“+”,日期=”+“+”,完成=”+“+”,其中[ID]=“+noteId+”);
}
1.1布尔数据类型
SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)
参考:SQLite将布尔存储为0/1:
var _doneInt = _done : 1 : 0;
public void UpdateNote(字符串名称、字符串注释、字符串日期、bool完成、int注释ID)
{
var _doneInt=_done:1:0;
_sqlconnection.Query(“更新[Notes]集合名称=””+“+”,注释=”+“+”,日期=”+“+”,完成=”+“+”,其中[ID]=“+noteId+”);
}
1.1布尔数据类型
SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)
Ref:SQLite中没有布尔类型,因此必须使用0表示false,1表示true。此外,不应使用
查询
,而应使用执行:
_sqlconnection.Execute("UPDATE [Notes] SET Name='" + _name + "', Note='" + _note + "', Date='" + _date + "', Done='" + _done ? 1 : 0 + "' WHERE [ID]='" + noteId + "'");
从
SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)
SQLite中没有布尔类型,因此必须使用0表示false,1表示true。此外,不应使用
查询
,而应使用执行:
_sqlconnection.Execute("UPDATE [Notes] SET Name='" + _name + "', Note='" + _note + "', Date='" + _date + "', Done='" + _done ? 1 : 0 + "' WHERE [ID]='" + noteId + "'");
从
SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)
你能不能不用更新? 已发送对象以进行更新,然后让sqlite.net解决此问题:
public void UpdateNote(Notes _note)
{
_sqlconnection.Update(_note)
}
如果您查看更新测试调用
这是假设您的noteId
字段具有[PrimaryKey]
这似乎对我有用:
型号:
public class Notes
{
[PrimaryKey, AutoIncrement, NotNull]
public int Id { get; set; }
public string Name { get; set; }
public string Note { get; set; }
public string Date { get; set; }
public bool Done { get; set; }
}
试验方法:
public bool testForNotes(Notes n)
{
_sqliteConnection.CreateTable<Notes>();
_sqliteConnection.Insert (n);
n.Done = true;
var i = _sqliteConnection.Update (n);
return (i > 0);
}
你能不能不用更新? 已发送对象以进行更新,然后让sqlite.net解决此问题:
public void UpdateNote(Notes _note)
{
_sqlconnection.Update(_note)
}
如果您查看更新测试调用
这是假设您的noteId
字段具有[PrimaryKey]
这似乎对我有用:
型号:
public class Notes
{
[PrimaryKey, AutoIncrement, NotNull]
public int Id { get; set; }
public string Name { get; set; }
public string Note { get; set; }
public string Date { get; set; }
public bool Done { get; set; }
}
试验方法:
public bool testForNotes(Notes n)
{
_sqliteConnection.CreateTable<Notes>();
_sqliteConnection.Insert (n);
n.Done = true;
var i = _sqliteConnection.Update (n);
return (i > 0);
}
哦现在更有意义了!谢谢虽然上面的格式似乎不适合我,但我想出来了。这就是我所做的:''int'u doneInt=\u done?1 : 0;谢谢大家的帮助D
code
噢!现在更有意义了!谢谢虽然上面的格式似乎不适合我,但我想出来了。这就是我所做的:''int'u doneInt=\u done?1 : 0;谢谢大家的帮助Dcode
我已经试过了,但由于某种原因,它对我不起作用:/I我知道上面的答案解决了你的问题,但是你能发布你的Notes模型吗?由于您无法执行insert或其他sqlite命令,因此必须手动执行sqlite查询确保!这是我的模型:[PrimaryKey,AutoIncrement,NotNull]public int ID{get;set;}公共字符串名称{get;set;}公共字符串注释{get;set;}公共字符串日期{get;set;}公共bool Done{get;set;}公共注释(){}
对于insert,我使用SQLites insert方法,所以我真的很困惑,为什么is不能与update一起使用。在应用程序输出中使用update时,您是否遇到任何错误?我已经尝试过,但由于某些原因,它对我无效:/我知道上面的答案解决了您的问题,但您是否能够发布您的Notes模型?由于您无法执行insert或其他sqlite命令,因此必须手动执行sqlite查询确保!这是我的模型:[PrimaryKey,AutoIncrement,NotNull]public int ID{get;set;}公共字符串名称{get;set;}公共字符串注释{get;set;}公共字符串日期{get;set;}公共bool Done{get;set;}公共注释(){}
对于insert,我使用SQLites insert方法,所以我真的不明白为什么is不能与update一起使用。在应用程序输出中使用update时,您是否遇到任何错误?