问题标签 [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.
c# - SQLite-net 在第二次调用 ExecuteNonQuery 时抛出异常
我正在使用 SQLite-net 访问 WinRT 应用程序中的 SQLite 数据库文件。我使用 ExecuteQuery 从数据库读取没有任何问题(我实际上使用了https://github.com/praeclarum/sqlite-net/issues/82的修改版本,因为我不使用表映射并且想要结果作为在下面调用 ExecuteDeferredQuery 的字典)。
当我尝试使用 将记录插入我的数据库ExecuteNonQuery
时,我收到一条异常消息“CannotOpen”。
嗯,只要上面几行,我就可以成功地从数据库中读取了。我仔细检查了sqlite数据库文件的文件权限,并让计算机上的每个人都可以完全控制该文件以避免任何文件权限问题,但结果是一样的,仍然得到“CannotOpen”。
我只是试图用 ExecuteNonQuery 做一个选择语句(只是为了看看它是否有效),我仍然得到一个异常,这次说“Row”作为异常消息。
我试图用 ExecuteQuery 执行我的插入,看看会发生什么,没有抛出异常,一切似乎都很好,但没有行插入到我的数据库中。
好吧,这可能是可以解释的,因为 ExecuteQuery 是为查询而不是插入而设计的,但是 ExecuteNonQuery 抛出异常的原因可能是什么?
这是我的代码(出于隐私考虑,删除了带有通用名称和参数的实际表名和参数):
但是,此代码不会引发异常:
更新:我进一步将问题归结为更简单(和奇怪)的问题。此代码是连接初始化后对 SQLite 框架的第一次调用。这段代码在执行时会在第四行引发异常:
更新 2:如果我调用 ExecuteToDictionary 而不是 ExecuteNonQuery,它可以工作。
更新 3 :如果我在所有这些调用之前尝试直接查询(来自conn
对象,例如conn.Execute("query...")
) ,它会失败。如果是插入查询,我会得到错误,如果是选择查询,我会得到一个CannotOpen
Row
错误。
为什么我在第二次调用 ExecuteNonQuery 时出现异常?
当我尝试使用 ExecuteNonQuery 进行 SELECT 时,为什么会收到不同的错误消息“Row”?最后,为什么这些异常对用户如此不友好?
c# - SQLite-net 中的名称表
我正在构建一个使用 SQLite 作为存储数据库的 Windows 8 C#/XAML 应用程序,并且我正在尝试使用 SQLite-net 语法创建多个表。
从我到目前为止的研究来看,一个表是基于一个类创建的。首先,我通过以下方式创建了一个“帐户”类:
然后创建一个表并稍后在代码中通过以下方式输入初始数据:
我想创建多个帐户表,但db.CreateTable<Account>()
语法只是创建一个表,数据被插入到列中,db.Insert().
我看不到在哪里输入表本身的名称。
如何基于 Account 类创建多个表,即一个名为“BusinessAccounts”的表和另一个名为“PersonalAccounts”的表?
有没有办法用 SQLite-net 做到这一点?或者我是否需要以某种方式明确地写出 SQLite 命令?
sqlite - 在 MonoTouch 中使用 Sqlcipher 和 sqlite-net
我在 MonoTouch 中有一个 ios 应用程序,我必须在其中向我的数据库添加加密。该数据库是使用 sqlite-net 库 ( https://github.com/praeclarum/sqlite-net ) 创建的。是否可以将 Sqlcipher 与 sqlite-net 一起使用?
我发现的样本是使用 Ado.net。工作正常.. 如何将 Sqlcipher 与 sqlite-net 集成?
sqlite - 无法在 Windows 8 Store App 中打开 SQLite 数据库
我正在尝试在我的 Windows 8 Store App (HTML/JS) 中包含 SQLite 数据库。我正在关注这些教程:
http://www.youtube.com/watch?feature=player_embedded&v=luV6no8ti6M http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store -apps.aspx
在某一时刻,我添加了以下代码:
部署应用程序后,我收到以下错误:
我查找了此路径并创建了文件 people.db,但显然无法打开。这可能是什么原因?
我还下载了本教程的源代码:
http://www.dzone.com/articles/getting-started-sqlite-windows
并得到完全相同的异常-我的计算机配置可能有问题吗?
sqlite - 将 Windows 8 商店应用程序迁移到 8.1 sqlite 问题
目前,我正在尝试将我的 Windows 商店应用程序重新定位到 Windows 8.1 预览版。问题是,我在我的一个项目中使用了 sqlite-net 包。我按照此处描述的步骤操作: http ://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/并下载了 sqlite Visual Studio 的预发布版本此链接的扩展名: http ://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/ 。我在我的项目中添加了对新安装的用于 windows 运行时的 sqlite 的引用,但是在构建时出现错误:
某处,在某个论坛上有人暗示,如果您从项目中删除对 microsoft visual c++ 运行时包的引用,它将解决问题。在我完成整个解决方案后编译得很好,但在运行时出现以下异常:
一行抛出异常:
SQLite.cs 文件(文件来自前面提到的 sqlite-net 包)。
项目的文件夹 bin/Debug/AppX 包含文件 sqlite3.dll。我的解决方案中的每个项目都将 x86 作为平台目标。我该如何解决这个问题?在迁移项目之前,一切正常。
sqlite - Windows Phone:如何排除 SQLite-net 中的列/属性?
如果我为 windows phone 使用 SQL Server CE,我可以选择类的哪些属性映射到数据库表。这允许我在一个类上拥有抽象属性。
例如
是否可以从 SQLite-net 中的类定义中排除属性?我不能使用扩展,因为其中一些属性被 UI 绑定使用。
.net - Sqlite-net 日期时间检索
嗨,我在使用 sqlite-net 库从 SQLite 数据库中检索日期时间时遇到问题。Db 列的类型为 DATE,其中一条记录中的示例日期为: 2013-08-02
我有一个模型:
我执行这行代码:
除 AccountingDate 之外的每个字段都正确填写,所有 DateTime 字段都填写了值:{1/1/0001 12:00:00 AM}(Visual Studio 调试器视图)。为什么日期解析不正确?我尝试将 Db 列类型切换为 DATETIME 和 TEXT,但得到了相同的结果。
编辑。上面使用的对象 dc 是来自 sqlite-net 库的 SQLiteConnection 类型。
c# - sqlite-net 无法识别父类的主键
我有我的课程FileDownloadContentModel
延伸IBaseContentModel
这里是IBaseContentModel
:
由于某种原因,sqlite-net 在获取表映射时无法识别主键。它声明主键为空。如果我直接在我的FileDownloadContentModel
类中包含 id(主键),它能够将主键识别为 id。
这是一个已知的错误还是我在这里做错了什么?任何帮助表示赞赏,谢谢!
更新
我现在对它进行了更多的研究,这是我的一个愚蠢的错误。我有两个 sqlite 的“实例”,由于某种原因,IBaseContentModel 使用的 sqlite 实例与 FileDownloadContentModel 不同,这就是无法识别主键的原因(因为它不是来自同一个实例)。例如,我的意思是两个完全不同的 sqlite.cs 文件,它们具有不同的包名称。
mvvmcross - 在 MvvmCross 中使用 RIO 和 Sqlite-net
在优秀的 mvvmcross-library 中,我可以使用 RIO 绑定来防止不可读的代码:
然后我可以使用 Title.Value 读取和写入值。使模型更具可读性。
通常,这个属性会写成: private string _title;
但是当我想使用 sqlite-net 时,这些字段无法流式传输到数据库,因为它们不是带有 getter 和 setter 的基本类型。
我可以想到一些解决方法:
- 创建一个类似于模型的新简单对象,但仅使用直接 db-fields。并在模型上创建一个简单的导入导出静态方法。这也可以防止与永远不需要与实际数据库相关的复杂模型代码作斗争。
- 让 sqlite-net 理解阅读 NC 字段。我阅读了映射器的代码,但看起来这将是很多工作,因为它依赖于 getter-setter。我没有找到将自定义映射插入类型的方法,这可能是通用的。
- 删除 RIO 并自己输入所有代码,而不是依赖 RIO。
也许有人有一些建议?
sql-order-by - SQLite-Net:在 ORDER BY 子句中使用比较
我正在使用 SQLite-Net 数据库,并希望通过比较进行排序,如下所示:
(注意:value1 和 Field1 都是整数)
这会引发异常:
System.NotSupportedException:Order By 不支持:i => i.Field1 > value1
作为一种解决方法,我现在将此查询分为两部分:
- 选择Field1大于value1的项
- 选择Field1小于等于value1的项
然后将这些结果组合成一个结果。
有没有更好的方法来使用 SQLite-Net 来处理这个问题?