c# - 如何在 Xamarin 表单中使用 SQLite 更新数据库中的项目
问题描述
我正在尝试更新我的应用程序上的用户信息。
我可以在我的数据库中添加一个用户,但是当我尝试更新其信息时,它不起作用。
这是更改信息的功能:
public void ChangerLanguageValue(string language)
{
var myuser = userinfodatabase.GetUsers();
myuser.NewsLanguage = language;
userinfodatabase.UpdateUserInfos(myuser); // this does not work
}
这是我的数据库配置:
class UserInfosDatabase
{
private SQLiteConnection conn;
public UserInfosDatabase()
{
conn = DependencyService.Get<ISQLite>().GetConnection();
conn.CreateTable<MyUser>();
}
public string AddUser(MyUser localuser)
{
conn.Insert(localuser);
return "success";
}
public MyUser GetUsers()
{
var users = (from u in conn.Table<MyUser>() select u);
return users.ToList().FirstOrDefault();
}
//Update
public string UpdateUserInfos(MyUser localuser)
{
conn.Update(localuser);
return "succes";
}
}
解决方案
对于 Xamarin.Forms 中的 SQLite,我们可以使用插件 sqlite-net-pcl。
它有非常简单的方法来安全地执行 CRUD 操作和查询(使用参数),并以强类型的方式检索这些查询的结果。
在您的情况下,您最好将数据更新为async
public Task <string>UpdateUserInfos(MyUser localuser)
{
conn.UpdateAsync(localuser);
return "success";
}
推荐阅读
- php - 如何从 Android 向 PHP 发出 post 请求?
- javascript - HTML 代码被放置为文本而不是呈现 - 更新
- mysql - 从 Pyspark 加载到 Mysql 时忽略错误
- sql-server - T-SQL 存储过程已停止返回从 URL 检索的值
- scala - 从 neo4j 获取数据
- java - 如果套接字在 thrad 中没有错误地关闭,我如何停止从输入流中读取?
- windows - 删除工作区文件夹后 Perforce (P4V) 未打开
- wordpress - 使 Wordpress 自定义侧边栏仅对特定客户角色可见?
- javascript - for循环中的if/else语句
- c++ - 对非数组指针进行索引和读取超出最后一个元素时的类型确定