标签: sqlite

SQLite:获取列的总数/总和

我正在使用SQLite,我正在尝试返回列buy_price中一列的总和,TOTAL同时返回所有数据.我不希望/需要对数据进行分组,因为我需要在每个返回的行中包含数据.

id    date       pool_name    pool_id    buy_price  TOTAL
 1    09/01/12   azp          5          20
 2    09/02/12   mmp          6          10
 3    09/03/12   pbp          4          5
 4    09/04/12   azp          7          20
 5    09/05/12   nyp          8          5             60
Run Code Online (Sandbox Code Playgroud)

当我包含类似的东西时 SUM(buy_price) as TOTAL,只返回一行.我需要返回所有行以及所有buy_price条目的总和.

sql sqlite

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

在python-2.7的sqlite3中的嵌套循环中使用多个游标

我在嵌套循环中的单个sqlite数据库上使用多个游标时遇到问题.我找到了一个适合我的解决方案,但它有限,我没有看到在线记录这个具体问题.我这样发布: - 一个明确的问题/解决方案可用 - 看看是否有更好的解决方案 - 也许我在sqlite3 python模块中发现了一个缺陷

情况就是这样:我的Python应用程序将社交关系数据存储在sqlite中.数据集包括两个表之间的一对多关系:myConnections和sharedConnections.前者每个连接都有一行.sharedConnections表具有0:N行,具体取决于共享的连接数.为了构建结构,我使用嵌套循环.在外部循环中,我访问myConnections中的每一行.在内部循环中,我填充sharedConnections表.代码如下所示:

curOuter = db.cursor()  
for row in curOuter.execute('SELECT * FROM myConnections'):    
    id  = row[0]  
    curInner = db.cursor()  
    scList = retrieve_shared_connections(id)  
    for sc in scList:  
        curInner.execute('''INSERT INTO sharedConnections(IdConnectedToMe, IdShared) VALUES (?,?)''', (id,sc))  
db.commit()  
Run Code Online (Sandbox Code Playgroud)

结果很奇怪.该sqlite3表获取前两个记录的重复条目sharedConnections.他们有点整理.A的连接,B的连接,然后是A,然后是B.在最初的口吃之后,处理是正确的!例:

myConnections
-------------
a   
b  
c  
d  

sharedConnections
-------------
a->b  
a->c  
b->c  
b->d  
a->b  
a->c  
b->c  
b->d  
Run Code Online (Sandbox Code Playgroud)

解决方案不完善.而不是使用迭代器从外循环光标,我myConnections,然后SELECT和遍历结果列表.由于我的数据集很小,这没关系.

curOuter = db.cursor()
curOuter.execute('SELECT * FROM myConnections'):
rows = curOuter.fetchall()
for row in rows: …
Run Code Online (Sandbox Code Playgroud)

python sqlite python-2.7

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

SQLiteOpenHelper与ContentProvider

我是Android开发的新手.我正在尝试创建一个从内部数据库(SQLite)读取的应用程序,并列出列表中的所有数据(我正在使用listView).

到目前为止,我得到了一个名为DatabaseHandlerextends 的类SQLiteOpenHelper,它正在执行所有数据库操作(选择数据,插入数据,删除数据......).

但是现在我想列出这些值,我正在阅读一些我必须使用的网站,Loader而不是Cursor一个ContentProvider.到目前为止,我理解ContentProvider提供对数据库的受控访问.

我的问题是:ContentProvider做同样的事SQLiteOpenHelper吗?

此外,我正在使用API​​级别8,并且ContentProvider只能在API级别11上使用.解决此问题的最佳方法是什么?

提前致谢.

sqlite android sqliteopenhelper

15
推荐指数
2
解决办法
9022
查看次数

在便携式类库中使用SQLite

最近我们开始研究一个新项目,其中包括Windows 8 Metro,Windows Phone和桌面应用程序的客户端.决定使用MVVM模式作为主要架构,因为在项目之间共享ViewModel对我们来说是更可接受的解决方案.

我们决定为此目的使用可移植类库,但问题是在我们尝试添加对适当库的引用后,从Visualstudio 2012扩展库下载并安装SQLite for Windows运行时,我们根本看不到这些库.这让我们想到,在Portable类库项目中不可能使用SQLite.

也许你已经完成了一些并且知道我们实现这种功能的方式?请提供正确的方法来开发此任务,因为使用SQLite并且在开发的这个阶段具有可重用的代码非常重要

c# sqlite portable-class-library windows-8 windows-phone-8

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

SQLite外键示例

我不是sql/sqlite的专家..假设我们有两个表:

CREATE TABLE child (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
);

CREATE TABLE MyTableB(
  dog TEXT, 
  FOREIGN KEY(dogList) REFERENCES child(id)
);
Run Code Online (Sandbox Code Playgroud)

INSERT怎么样?我的createTable操作是否正确?我想:一个孩子可以有一只以上的狗,一只狗可以有更多的孩子

编辑

如果我希望所有孩子和每个孩子都有与该孩子相关的狗列表怎么办?

python sql sqlite foreign-keys insert

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

如何锁定sqlite数据库?

过去我们遇到过一个问题,即流氓进程阻止了sqlite数据库.我已经写了一些代码来通知我们是否发生这种情况,但需要对其进行测试.

我怎么能故意锁定一个sqlite数据库,以便我可以检查一下我是否可以检查它是否被锁定了?

sqlite

15
推荐指数
1
解决办法
5010
查看次数

SQLite更新后:无法在DLL"SQLite.Interop.dll"中找到名为"sqlite3_changes_interop"的入口点

我的C#/ SQLite工作正常,直到我决定更新SQLite DLL(从1.0.82.0到1.0.84.0).现在我遇到了这个崩溃:

无法在DLL"SQLite.Interop.dll"中找到名为"sqlite3_changes_interop"的入口点

A first chance exception of type 'System.EntryPointNotFoundException' occurred in System.Data.SQLite.dll
System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>SparkleShare.vshost.exe</AppDomain><Exception><ExceptionType>System.EntryPointNotFoundException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>Unable to find an entry point named 'sqlite3_changes_interop' in DLL 'SQLite.Interop.dll'.</Message><StackTrace>   at System.Data.SQLite.UnsafeNativeMethods.sqlite3_changes_interop(IntPtr db)
   at System.Data.SQLite.SQLite3.get_Changes()
   at System.Data.SQLite.SQLiteStatement.TryGetChanges(Int32&amp;amp; changes)
   at System.Data.SQLite.SQLiteDataReader.NextResult()
   at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)

代码没有改变,所以我不认为这是一个代码问题(无论如何,这它发生的行).

我下载的新版本有什么问题吗?我在http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wikisqlite-netFx40-static-binary-Win32-2010-1.0.84.0.zipPrecompiled Statically-Linked Binaries for 32-bit Windows (.NET Framework 4.0)段落中下载了

编辑:我恢复到以前的DLL,但问题仍然发生,可能是因为Visual C#在某处无法清理某些缓存.

c# sqlite dll dllimport system.data.sqlite

15
推荐指数
1
解决办法
7580
查看次数

Sqlite:如何为BLOB强制转换(数据为TEXT)

我有一个sqlite数据库,我想用它从数据类型BLOB中提取一列信息.我在尝试这个:

SELECT cast(data as TEXT) FROM content

这显然不起作用.输出是乱码文本,如下所示:

x??Uak?0?>?8?0Ff;I?.??.i?%?A??s?M

内容列中的数据主要是文本,但也可能有图像(如果我将其转换为TEXT,我认为这可能会导致问题).我只想将该数据提取为可用格式.有任何想法吗?

sqlite casting

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

如何减少SQLite内存消耗?

我正在寻找在我的应用程序中减少SQLite3的内存消耗的方法.

在每次执行时,它都会创建具有以下模式的表:

(main TEXT NOT NULL PRIMARY KEY UNIQUE,count INTEGER DEFAULT 0)
Run Code Online (Sandbox Code Playgroud)

之后,数据库每秒充满50k操作.只写.

当一个项目已经存在时,它会使用更新查询更新"count"(我认为这称为UPSERT).这些是我的疑问:

INSERT OR IGNORE INTO table (main) VALUES (@SEQ);
UPDATE tables SET count=count+1 WHERE main = @SEQ;
Run Code Online (Sandbox Code Playgroud)

这样,每个事务有500万次操作,我可以非常快速地写入数据库.

我真的不关心这个问题的磁盘空间,但我有一个非常约束的RAM空间.因此,我不能浪费太多记忆.

使用sqlite3_user_memory()通知其执行期间内存消耗增长到近3GB.如果我通过sqlite3_soft_heap_limit64()将其限制为2GB,则当达到2GB时,数据库操作性能几乎降至零.

我不得不将缓存大小提高到1M(默认页面大小)以达到理想的性能.

我该怎么做才能减少内存消耗?

c sqlite performance memory-consumption

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

SQLite3"忘记"使用外键

我正在使用带有SQLite3的Ruby,但我在Sqlite3中尝试使用外键却很不成功.根据sqlite3 --version,版本3.7.13已安装.据我所知,自3.6.x版以来,Sqlite3支持外键.

我知道默认情况下外键被禁用,必须激活PRAGMA foreign_keys = ON;.在我的Ruby db-create-script中,我正在做这样的事情:

sql = <<-SQL
  PRAGMA foreign_keys = ON;
  CREATE TABLE apps (
    id ....
  );
  CREATE TABLE requests (
    ...
    app_id INTEGER NOT NULL,
    FOREIGN KEY(app_id) REFERENCES apps(id),
  );
  ...
SQL
db.execute_batch(sql)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我可以愉快地requests使用未知的app-id 插入行,它可以工作,但当然不应该.

有意思:直接使用sqlite3 shell,我可以观察到以下行为:

$ sqlite3 database.db
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
1 // as expected
sqlite> .quit
$ sqlite3 database.db
sqlite> PRAGMA foreign_keys;
0 // off ?!
Run Code Online (Sandbox Code Playgroud)

在不退出sqlite3 shell的情况下,外键在激活它们之后正在工作(而不是退出shell),我不允许 …

ruby sql sqlite raspbian

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