问题标签 [sqlite.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
757 浏览

sqlite - 如何使主键从 1000 开始?sqlite.net xamarin android

我需要主键从 1000 开始。怎么办?

0 投票
1 回答
797 浏览

sqlite - SQLiteAsyncConnection 的 Xamarin 表单 SQLite 问题

我正在关注官方文档中关于在 Xamarin.forms 应用程序中使用 SQLite 数据库功能的以下 Xamarin 示例。

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/databases/

问题是,从示例项目中复制时,它使用的 sqlite.net 版本是旧的,因此出现以下函数错误:

无法识别 SQLiteAsyncConnection。

现在我可以添加 async pcl sqlite 库,但是教程会出现其他错误,其中 String 类型的连接字符串被传递给:

关于如何以最佳方式推进本教程的任何信息或帮助?或者是否有最新的最佳实践?

谢谢

0 投票
1 回答
637 浏览

c# - SQLiteAsyncConnection 按顺序插入多行?

我之前使用过 SQLite,并且在循环中使用 Insert 添加多行for很慢。解决方案是使用transaction.

现在我SQLiteAsyncConnection在 SQLite.Net(用于 ORM)中使用,我也尝试使用transaction. 它有效,但只有一个问题。插入顺序不是数据的顺序。

如果rows包含 [1,2,3,4,5,6],则数据库中的行类似于 [3,1,2,6,4,5]。我怎样才能保持原来的订单?

请注意,我仅指新插入的行。即使代码正在替换现有行,但在测试时数据库中没有要替换的现有行。

PS:该行的ID字段是[PrimaryKey],但rows在行中没有排序ID。似乎在数据库中的行是按ID. 我不希望它被排序,ID但要保持原始顺序。

PS 2:我需要知道ID最后插入的行。当使用类似的 GUI 工具查看数据库DB Browser for SQLite或获取最后一项时LIMIT 1,SQLite 似乎已自动对行进行排序ID。我做了一些谷歌搜索,它按照SQL的规则说,当没有时ORDER BY,返回的行的顺序不保证是物理顺序,无论如何。我应该创建另一个字段并将其设置为主要的自动增加字段吗?

目前,ID保证每行唯一,但“ID”是数据本身的一部分,而不是专门添加用于数据库的字段。

0 投票
3 回答
3489 浏览

c# - SQLite-net-pcl 中的 InsertAll 和 UpdateAll VS SQLite.Net-PCL 中的 InsertOrReplaceAll

我想删除SQLite.Net-PCL包并想使用sqlite-net-pcl,因为我后来发现它SQLite.Net-PCL没有被官方维护。

我的 Xamarin 项目中有存储GUID为字符串类型主键的表。我有来自服务器的记录列表,目前使用InsertOrReplaceAll方法插入新记录并更新现有记录,所有这些都基于我的GUID主键。

现在,sqlite-net-pcl没有InsertOrReplaceAll方法,而是只有InsertAll&UpdateAll方法。Microsoft msdn Link表示检查主键是否具有可用值,并根据该值决定是否必须插入或更新记录。

但是,我有一种情况,主键值总是List在插入或更新对象之前预先设置在 中,并且不想循环检查记录是否存在超过 500 条记录。

在这种情况下如何一次插入或替换我的所有记录?

考虑以下示例来理解这种情况:

0 投票
2 回答
3174 浏览

c# - SQLite .NET,ExecuteScalarAsync,如何知道什么时候没有结果?

SQL 语句正在检索行的 ID。但可能没有这样的行。当我在 GUI 工具中执行特定的 SQL 语句时,它返回“0 行在 0 毫秒内返回:...”。

但是,当我使用 执行相同的 SQL 语句时ExecuteScalarAsync<int>,它返回 0,并且没有发生异常或 null。我怎么知道是否没有这样的行?理论上,可以存在 ID 为 0 的行。

PS:这是我使用 Nuget ( https://github.com/praeclarum/sqlite-net ) 添加的 SQLite-net。它的版本是 1.4.118。SQL 语句非常简单。我更改了字段名称,但基本上是这样的:

0 投票
1 回答
445 浏览

sqlite - “SQLite.SQLiteException:列名重复”列名不区分大小写吗?

我在我的一个项目中使用 SQLLite.Net-PCL 3.1.1,在 SQLite 中创建表时遇到了“SQLite.SQLiteException:重复列名”问题。

原因是因为我的父类(我不拥有)有一个名为"ID"的列。我的界面有一个名为"Id"的列,注意大小写。

我通过将以下代码行添加到派生类中解决了这个问题:

[Ignore] 属性阻止将“ID”列添加到我的 SQLite 数据库中,这解决了我的问题。

我的问题是:SQLite 中的列名在设计上是区分大小写的还是这是一个错误?

0 投票
1 回答
2114 浏览

sqlite - savePoint 无效,应该是调用 SaveTransactionPoint 的结果

使用嵌套事务时,出现以下异常:

savePoint 无效,应该是调用 SaveTransactionPoint 的结果

0 投票
0 回答
990 浏览

xamarin - 如何在 xamarin.forms 中的 listview 和 sqlite 数据库之间进行数据绑定?

我尝试使用有关使用本地数据库和阅读工作应用程序(Tasky)源代码的指南来了解如何实现这一点,但我的列表视图仍然是空的。另外我想知道解决这样的问题是否可以,或者我应该创建一个视图模型,其中包含一个可观察的集合,其中填充了从数据库获得的结果?这是我的代码:

这是我的模型:

这是我的数据访问层

这是我的看法:

最后是后面的代码:

}

这是添加联系人页面:

还有代码隐藏:

0 投票
4 回答
241 浏览

c# - C# 属性地狱 - 在两个不同 SQL 平台上的移动设备和服务器之间共享一个类

我们共享一个 poco 的

  • ServiceStack 网络服务
  • 使用 MySQL 的 ServiceStack Orm
  • 使用 Sqlite.net 的 Xamarin 移动客户端。

问题是共享课程变得一团糟。

如果还不够糟糕,我需要

  • 约束数据库中每个字段的长度......
  • 将这些对象保存在 MongoDb 中。幸运的是,他们有一个 AutoMapper 类可以在运行时执行此操作。

不知道该怎么办。我失败的想法包括:

  • 尝试使用:[Conditional("DEBUG")]。但这无济于事

  • 似乎 sqlite.net 使用了自己的属性

    [AttributeUsage (AttributeTargets.Property)] 公共类 IndexedAttribute : 属性

    所以它不会找到 Mysql [Index] 属性

  • 可以尝试在每个属性上包含两个属性

    [索引] [索引] public string UserAccountId { get; 放; }

  • 我试图把它变成两个单行但 c# VS 抱怨

最后,** APPEARS ** 唯一可行的方法是将接口保留为类的单一定义,并有许多具体的类以不同的方式装饰。

有任何想法吗??

0 投票
1 回答
1628 浏览

c# - 将 SQLite 表存储在 ObservableCollection 中?

此代码创建一个数据库连接,然后基于AppUser模型创建一个表。我正在尝试存储最后一行的结果,但遇到以下错误:

CS1503 参数 1:无法从转换 Dialler1.DatabaseConnection.AsyncTableQuery<AppUser>System.Collections.Generic.IEnumerable<AppUser>