Questions tagged «sqlite»

SQLite是一个软件库,可实现自包含,无服务器,零配置的事务型SQL数据库引擎。

14
Python sqlite3和并发
我有一个使用“线程”模块的Python程序。每秒一次,我的程序启动一个新线程,该线程从Web上获取一些数据,并将这些数据存储到我的硬盘中。我想使用sqlite3来存储这些结果,但是我无法使其正常工作。问题似乎与以下几行有关: conn = sqlite3.connect("mydatabase.db") 如果将这行代码放入每个线程中,则会收到OperationalError通知我数据库文件已锁定。我想这意味着另一个线程通过sqlite3连接打开了mydatabase.db并已将其锁定。 如果将这行代码放入主程序中,并将连接对象(conn)传递给每个线程,则会收到一个ProgrammingError,表示在线程中创建的SQLite对象只能在同一线程中使用。 以前,我将所有结果存储在CSV文件中,并且没有任何这些文件锁定问题。希望使用sqlite可以实现。有任何想法吗?
87 python  sqlite 

7
rawQuery(query,selectionArgs)
我想使用选择查询从表中检索数据。我已经找到了检索数据rawQuery(query, selectionArgs)的SQLiteDatabase类方法。但是我不知道queryandselectionArgs应该如何传递给rawQuery方法?
87 android  sqlite 

9
“内容提供者”与“ SQLite数据库”之间的确切区别
我已经为Android完成了SQLite数据库编程,但是除以下内容外,我对Content-Provider一无所知:“当我提到Android开发人员页面时,Android SDK解释了“ Content-provider”,因为它用于存储和检索数据。” 但是之后, “ Content-Provider”和“ SQLite Database”之间的确切区别是什么? 什么时候最好存储数据? 任何例子或帮助!

5
使用Shell脚本从sqlite导出到csv
我正在制作一个shell脚本,将sqlite查询导出到一个csv文件,就像这样: #!/bin/bash ./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on" ./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv" ./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv" ./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;" ./bin/sqlite3 ./sys/xserve_sqlite.db ".exit" 执行脚本时,输出将在屏幕上显示,而不是保存到“ out.csv”。它正在使用命令行执行相同的方法,但是我不知道为什么shell脚本无法将数据导出到文件中。 我究竟做错了什么?
87 sqlite  shell  csv 

12
如何检查Android SQLite数据库中是否存在表?
我有一个Android应用程序,需要检查数据库中是否已经有记录,如果没有,则处理一些事情并最终将其插入,如果数据确实存在,则只需从数据库中读取数据即可。我正在使用SQLiteOpenHelper的子类来创建和获取SQLiteDatabase的可重写实例,我认为如果表不存在,该表将自动负责创建表(因为执行此操作的代码位于onCreate(... ) 方法)。 但是,当该表尚不存在,并且第一个方法对我拥有的SQLiteDatabase对象执行了对query(...)的调用时,我的logcat显示错误“ I / Database(26434):sqlite返回:error code = 1,msg =否这样的表:“ appdata”,当然,没有创建appdata表。 有什么想法吗? 我正在寻找一种方法来测试表是否存在(因为如果不存在,则数据肯定不在其中,并且在写入表之前似乎不需要读取它,这似乎可以创建表)正确),或一种确保它已被创建并且只是空的方法,以便在第一次调用query(...)时及时进行 编辑 这是在以下两个答案之后发布的: 我想我可能已经发现了问题。我出于某种原因决定应该为每个表创建一个不同的SQLiteOpenHelper,即使它们都访问相同的数据库文件。我认为将代码重构为仅使用一个OpenHelper,并在其onCreate中创建两个表可能会更好。

9
密码保护SQLite数据库。可能吗?
我必须面对一个新的小项目。它将有大约7或9个表,其中最大的一个表将以每月1000行的最大速度增长。 我考虑将SQLite作为我的数据库...但是如果有人要更改数据库中的数据,我将需要保护数据库。 我的主要问题是: 是否可以像访问时那样用密码保护sqlite数据库? 对于如此小的解决方案,您会建议其他哪些RDBMS? 开发将在C#上进行,但我正在免费搜索。
87 c#  sqlite 

2
Android中的全文本搜索示例
我很难理解如何在Android上使用全文搜索(FTS)。我已经阅读了有关FTS3和FTS4扩展的SQLite文档。而且我知道可以在Android上进行。但是,我很难找到我能理解的任何例子。 基本数据库模型 一个SQLite数据库表(名为example_table)有4列。但是,text_column对于全文搜索,只有一列(名为)需要建立索引。每行text_column包含的文本长度在0到1000个单词之间。行的总数大于10,000。 您将如何设置表和/或FTS虚拟表? 您将如何执行FTS查询text_column? 补充说明: 因为只需要对一列进行索引,example_table所以对于非FTS查询,仅使用FTS表(和dropping )效率低下。 对于如此大的表,text_column将不希望在FTS表中存储重复的条目。这篇文章建议使用外部内容表。 外部内容表使用FTS4,但在Android API 11之前不支持FTS4 。答案可以假定API> = 11,但是对支持较低版本的选项进行注释将很有帮助。 更改原始表中的数据不会自动更新FTS表(反之亦然)。对于此基本示例,在您的答案中包括触发器不是必需的,但是仍然会有所帮助。


5
SQlite获取最近的位置(经度和纬度)
我在SQLite数据库中存储了经度和纬度数据,我想获取与所输入参数最接近的位置(例如,我当前的位置-纬度/经度等)。 我知道这在MySQL中是可能的,并且我已经做了大量的研究,认为SQLite需要Haversine公式的自定义外部函数(计算球体上的距离),但是我还没有找到任何用Java编写并且可以工作的东西。 另外,如果要添加自定义功能,则需要org.sqlite.jar(用于org.sqlite.Function),这会为应用添加不必要的尺寸。 另一方面,我需要SQL的Order by函数,因为仅显示距离并不是什么大问题-我已经在我的自定义SimpleCursorAdapter中做到了,但是我无法对数据进行排序,因为我我的数据库中没有“距离”列。这意味着每次位置更改时都要更新数据库,这会浪费电池和性能。因此,如果有人对使用不在数据库中的列对光标进行排序有任何想法,我也将不胜感激! 我知道目前有大量使用此功能的Android应用程序,但是有人可以解释它的神奇之处。 顺便说一下,我找到了这种选择:在SQLite中查询以获取基于Radius的记录? 建议为lat和lng的cos和sin值添加4个新列,但是还有其他方法,不是那么多余吗?

15
rails install pg-找不到'libpq-fe.h标头
$ sudo bundle install 结果 Fetching gem metadata from https://rubygems.org/........... Fetching gem metadata from https://rubygems.org/.. Using rake (0.9.2.2) Using i18n (0.6.1) Using multi_json (1.3.6) Using activesupport (3.2.8) Using builder (3.0.4) Using activemodel (3.2.8) Using erubis (2.7.0) Using journey (1.0.4) Using rack (1.4.1) Using rack-cache (1.2) Using rack-test (0.6.2) Using hike …

18
无法加载此类文件-sqlite3 / sqlite3_native(LoadError)在Rails上的ruby上
当我尝试在Ruby 2.0.0上使用Rails 4.0.0设置服务器的基本安装和初始化时,我遇到了以下错误消息。 /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError) from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>' from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require' from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require' from …

3
Android数据库交易
我已经创建了一个数据库。我想做交易。SaveCustomer()包含多个语句,以便Customer, CustomerControl, Profile, Payment在那时将记录插入表中。 当用户调用 SaveCustomer()method时,该数据将进入这4个表。那么我该如何进行交易?如果一个表插入失败,则需要回滚所有内容。例如,当第3个表插入记录时出现错误,那么还需要回滚前两个表的插入记录。 看我的代码: public void saveCustomer(){ DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this); dbAdapter.openDataBase(); ContentValues initialValues = new ContentValues(); initialValues.put("CustomerName",customer.getName()); initialValues.put("Address",customer.getAddress()); initialValues.put("CustomerPID",strPID); initialValues.put("Date",strDateOnly); long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues); } 同样也有其他陈述。 DBAdpter的代码是: public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) { long n =-1; try { myDataBase.beginTransaction(); n = myDataBase.insert(tableName, …


10
如何更新表中的行或将其插入(如果不存在)?
我有下表的计数器: CREATE TABLE cache ( key text PRIMARY KEY, generation int ); 我想增加一个计数器,如果相应的行还不存在,则将其设置为零。有没有办法在标准SQL中没有并发问题的情况下做到这一点?该操作有时是事务的一部分,有时是独立的。 如果可能,SQL必须在SQLite,PostgreSQL和MySQL上未经修改地运行。 搜索产生了一些想法,这些想法可能遇到并发问题,或者特定于数据库: 尝试到INSERT新行,UPDATE如果有错误。不幸的是,该错误会INSERT中止当前事务。 UPDATE该行,如果未修改任何行,则为INSERT新行。 MySQL有一个ON DUPLICATE KEY UPDATE子句。 编辑:感谢所有的伟大答复。看起来Paul是对的,而且没有一种可移植的方式来做到这一点。这对我来说是非常令人惊讶的,因为这听起来像是一个非常基本的操作。

3
Python中unicode()和encode()函数的用法
我在对路径变量进行编码并将其插入SQLite数据库时遇到问题。我试图用无济于事的encode(“ utf-8”)函数解决此问题。然后,我使用unicode()函数为我提供unicode类型。 print type(path) # <type 'unicode'> path = path.replace("one", "two") # <type 'str'> path = path.encode("utf-8") # <type 'str'> strange path = unicode(path) # <type 'unicode'> 最终我获得了unicode类型,但是当path变量的类型为str时,仍然出现相同的错误 sqlite3.ProgrammingError:除非使用可以解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。强烈建议您改为将应用程序切换为Unicode字符串。 您能帮我解决此错误,并解释encode("utf-8")和unicode()功能的正确用法吗?我经常为此而斗争。 编辑: 此execute()语句引发错误: cur.execute("update docs set path = :fullFilePath where path = :path", locals()) 我忘记更改具有相同问题的fullFilePath变量的编码,但是现在我很困惑。我应该只使用unicode()还是encode(“ utf-8”)还是两者都使用? 我不能用 fullFilePath = …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.