标签: sqlite

Android:使用ContentResolver时的SQLite事务

目标:从XML数据刷新数据库

过程:

  • 开始交易
  • 从表中删除所有现有行
  • 每个解析XML的主要元素插入主表并获取PK
  • 每个主元素的子元素记录插入到第二个表中,从上一步提供FK
  • 提交交易

数据库操作相当标准的东西.问题是CRUD操作不是在内部完成,ContentProvider而是使用ContentResolver插件,例如看起来像resolver.insert(CONTENT_URI, contentValues).ContentResolver API似乎没有任何与事务相关的东西,我无法使用,bulkInsert因为我间歇性地插入2个表(另外我也希望delete在事务内部).

我正在考虑ContentProvider通过使用注册我自定义的监听器,registerContentObserver但由于ContentResolver#acquireProvider隐藏了方法,我如何获得正确的引用?

我运气不好吗?

sqlite android transactions android-contentresolver android-contentprovider

32
推荐指数
2
解决办法
2万
查看次数

Sqlite/SQLAlchemy:如何强制执行外键?

新版本的SQLite能够强制执行外键约束,但为了向后兼容,您必须分别为每个数据库连接打开它!

sqlite> PRAGMA foreign_keys = ON;
Run Code Online (Sandbox Code Playgroud)

我正在使用SQLAlchemy - 我怎样才能确保它始终打开?我试过的是这个:

engine = sqlalchemy.create_engine('sqlite:///:memory:', echo=True)
engine.execute('pragma foreign_keys=on')
Run Code Online (Sandbox Code Playgroud)

......但它不起作用!...我错过了什么?

编辑: 我认为我的真正问题是我安装了多个版本的SQLite,并且Python没有使用最新的版本!

>>> import sqlite3
>>> print sqlite3.sqlite_version
3.3.4
Run Code Online (Sandbox Code Playgroud)

但我刚刚下载了3.6.23并将exe放在我的项目目录中!我怎样才能弄清楚它正在使用哪个.exe并进行更改?

python sqlite sqlalchemy foreign-keys

32
推荐指数
6
解决办法
1万
查看次数

无法加载DLL的'sqlite3':找不到指定的模块.(来自HRESULT的异常:0x8007007E)

我目前正在使用SQLite for Windows Forms,但在运行项目时它显示错误:

无法加载DLL的'sqlite3':找不到指定的模块.(来自HRESULT的异常:0x8007007E)

我添加了DLL,System.Data.SQLite.dll但它显示相同的错误.请问有关这个问题的完美答案可以帮助我吗?提前致谢

sqlite

32
推荐指数
3
解决办法
4万
查看次数

从Android Studio浏览SQLite数据库

我想知道Android Studio有哪些SQLite插件允许用户浏览创建的数据库?

sqlite android ddms android-studio stetho

32
推荐指数
4
解决办法
4万
查看次数

Laravel:PDOException:找不到驱动程序

我正在服务器上开发一个网站我只能访问MySQL和FTP,所以我运行的所有命令都是通过b374k php shell.我遇到了SQL驱动程序的Laravel问题.我尝试切换到文件托管的SQLite(在database/database.sqlite中),但抛出的异常与使用MySQL时相同.控制台的输入和输出如下:

   php artisan migrate:refresh --seed
    [Illuminate\Database\QueryException]
could not find driver (SQL: select * from sqlite_master where type = 'table ' and name = migrations)
 [Doctrine\DBAL\Driver\PDOException]
could not find driver
 [PDOException]
could not find driver
Run Code Online (Sandbox Code Playgroud)

服务器上安装的Apache扩展包括:

    /etc/php/5.6/apache2/conf.d/10-mysqlnd.ini, 
/etc/php/5.6/apache2/conf.d/10-opcache.ini,
 /etc/php/5.6/apache2/conf.d/10-pdo.ini,
 /etc/php/5.6/apache2/conf.d/15-xml.ini, 
/etc/php/5.6/apache2/conf.d/20-calendar.ini,
 /etc/php/5.6/apache2/conf.d/20-ctype.ini, 
/etc/php/5.6/apache2/conf.d/20-curl.ini,
 /etc/php/5.6/apache2/conf.d/20-dom.ini, 
/etc/php/5.6/apache2/conf.d/20-exif.ini, 
/etc/php/5.6/apache2/conf.d/20-fileinfo.ini, 
/etc/php/5.6/apache2/conf.d/20-ftp.ini, /etc/php/5.6/apache2/conf.d/20-gd.ini, 
/etc/php/5.6/apache2/conf.d/20-gettext.ini, 
/etc/php/5.6/apache2/conf.d/20-iconv.ini, 
/etc/php/5.6/apache2/conf.d/20-json.ini, 
/etc/php/5.6/apache2/conf.d/20-mbstring.ini, 
/etc/php/5.6/apache2/conf.d/20-mcrypt.ini, 
/etc/php/5.6/apache2/conf.d/20-mysql.ini, 
/etc/php/5.6/apache2/conf.d/20-mysqli.ini, 
/etc/php/5.6/apache2/conf.d/20-pdo_mysql.ini,
 /etc/php/5.6/apache2/conf.d/20-phar.ini, 
/etc/php/5.6/apache2/conf.d/20-posix.ini, 
/etc/php/5.6/apache2/conf.d/20-readline.ini, 
/etc/php/5.6/apache2/conf.d/20-shmop.ini, 
/etc/php/5.6/apache2/conf.d/20-simplexml.ini, 
/etc/php/5.6/apache2/conf.d/20-sockets.ini,
 /etc/php/5.6/apache2/conf.d/20-sysvmsg.ini,
 /etc/php/5.6/apache2/conf.d/20-sysvsem.ini,
 /etc/php/5.6/apache2/conf.d/20-sysvshm.ini,
 /etc/php/5.6/apache2/conf.d/20-tokenizer.ini, 
/etc/php/5.6/apache2/conf.d/20-wddx.ini,
 /etc/php/5.6/apache2/conf.d/20-xmlreader.ini, 
/etc/php/5.6/apache2/conf.d/20-xmlwriter.ini, 
/etc/php/5.6/apache2/conf.d/20-xsl.ini, 
/etc/php/5.6/apache2/conf.d/20-zip.ini
Run Code Online (Sandbox Code Playgroud)

可能是什么问题,我该如何解决?(我无权访问root bash)

php mysql apache sqlite laravel

32
推荐指数
14
解决办法
12万
查看次数

Python sqlite3版本

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.version
'2.4.1'
Run Code Online (Sandbox Code Playgroud)

问题:

  • 为什么sqlite 3模块的版本为"2.4.1"
  • 什么是将这样一个旧的sqlite与Python捆绑在一起的原因是什么?sqlite releaselog说2002年3月13日(2.4.1).

python sqlite

31
推荐指数
1
解决办法
2万
查看次数

sqlite3上的基本递归查询?

我有一个简单的sqlite3表,如下所示:

Table: Part
Part    SuperPart
wk0Z    wk00
wk06    wk02
wk07    wk02
eZ01    eZ00
eZ02    eZ00
eZ03    eZ01
eZ04    eZ01
Run Code Online (Sandbox Code Playgroud)

我需要运行一个递归查询来查找给定SuperPart及其所有子组的所有对.所以我要说我有eZ00.eZ00是eZ01的超级部件,eZ01是eZ03的超级部件.结果必须不仅包括对(eZ00,eZ01)和(eZ01和eZ03),还必须包括对(eZ00,eZ03).

我知道还有其他方法来定义表格,但我在这里别无选择.我知道如果我知道树的深度,我可以使用几个工会,但我不会总是知道我想去的深度.它有助于拥有像WITH RECURSIVE这样的东西,甚至只是WITH(,,)AS x,但对于我搜索过的东西,这在sqlite中是不可能的,对吧?

有没有办法在sqlite3中执行此递归查询?

更新:

当提出这个问题时,SQLite不支持递归查询,但正如@lunicon所述,SQLite现在支持递归CTE,因为3.8.3 sqlite.org/lang_with.html

sql sqlite hierarchical-data

31
推荐指数
4
解决办法
3万
查看次数

SQLite:大表上COUNT慢

我在SQLite中遇到性能问题,在大型表上使用SELECT COUNT(*).

由于我还没有收到有用的答案,我做了一些进一步的测试,我编辑了我的问题以纳入我的新发现.

我有2张桌子:

CREATE TABLE Table1 (
Key INTEGER NOT NULL,
... several other fields ...,
Status CHAR(1) NOT NULL,
Selection VARCHAR NULL,
CONSTRAINT PK_Table1 PRIMARY KEY (Key ASC))

CREATE Table2 (
Key INTEGER NOT NULL,
Key2 INTEGER NOT NULL,
... a few other fields ...,
CONSTRAINT PK_Table2 PRIMARY KEY (Key ASC, Key2 ASC))
Run Code Online (Sandbox Code Playgroud)

Table1有大约800万条记录,Table2有大约5100万条记录,数据库文件超过5GB.

Table1还有2个索引:

CREATE INDEX IDX_Table1_Status ON Table1 (Status ASC, Key ASC)
CREATE INDEX IDX_Table1_Selection ON Table1 (Selection ASC, Key ASC)
Run Code Online (Sandbox Code Playgroud)

"状态"是必填字段,但只有6个不同的值,"选择"不是必需的,只有大约150万个值与null不同,只有大约600k个不同的值.

我在两个表上做了一些测试,你可以看到下面的时间,我为每个请求(QP)添加了"解释查询计划".我将数据库文件放在USB记忆棒上,这样我就可以在每次测试后将其删除,并获得可靠的结果,而不会干扰磁盘缓存.有些请求在USB上更快(我想由于缺少搜索时间),但有些请求更慢(表扫描).

SELECT COUNT(*) FROM …
Run Code Online (Sandbox Code Playgroud)

sql database sqlite performance

31
推荐指数
3
解决办法
2万
查看次数

我们可以在不改变APP版本的情况下更新Google Play商店上的APK

任何人都可以告诉我,我可以更换上传到Google Play商店的APK,而无需更改应用版本.

基本上我昨天已经上传了1.0版本的应用程序,今天我想用一些重要的修复程序重新上传APK,并且不想更改版本.

java sqlite android apk google-play

31
推荐指数
1
解决办法
3万
查看次数

在IndexedDB中,有没有办法进行排序复合查询?

说一张桌子有,名字,身份证,年龄,性别,教育等.ID是关键,表格也是姓名,年龄和性别的索引.我需要所有25岁以上的男学生按名字排序.

这在mySQL中很简单:

    SELECT * FROM table WHERE age > 25 AND sex = "M" ORDER BY name
Run Code Online (Sandbox Code Playgroud)

IndexDB允许创建索引并根据该索引对查询进行排序.但它不允许多次查询,如年龄和性别.我发现了一个名为queryIndexedDB(https://github.com/philikon/queryIndexedDB)的小型库,它允许复合查询,但不提供排序结果.

那么有没有办法在使用IndexedDB时进行排序复合查询?

sqlite html5 web-applications client-side indexeddb

31
推荐指数
1
解决办法
1万
查看次数