标签: sqlite

SQLite查询插入记录如果不存在

如果实际上没有插入记录,我想在sqlite表中插入一条记录.

假设它有三个字段pk,name,address

如果没有预先添加该名称,我想用名称插入新记录.

我们可以在一个Query中执行此操作.似乎有时与SQL查询略有不同.

sqlite

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

Android SQLite和数据库方案上的ORM

我正在寻找一个非常简单的ORM框架,用于Android上的SQLite.我一直在测试ActiveAndroid,但是没有一个例子能够在Eclipse上构建.
那么,人们如何在SQLite for Android中实现"多对多"关系?您如何反映有关删除行并保证数据库完整性的级联?

sqlite orm android many-to-many crud

25
推荐指数
5
解决办法
3万
查看次数

用于格式化前导零的数字的SQLite函数?

我有一个需要包含产品的SQLite数据库.这些产品具有固定格式的复合产品编号,包括类别,组和产品编号(cccccc.gg.ppp).每次插入新产品时,都应使用类别和组编号构建新产品编号,然后使用该编号增加1中的最高产品编号.

为此,我考虑将所有三个数字存储在单独的字段中,并使用视图动态组合产品编号.为了实现这一点,我需要添加前导零,因为产品编号的格式是固定的.

但是,我似乎无法找到一个内置的SQLite函数,它可以让我这样做...... :-(

我宁愿不写自定义函数,因为我们可能不得不与其他开发人员共享数据库,以便他们从中读取数据; 我不知道他们将使用什么平台或语言.

可以这样做吗?或者我们必须找到不同的解决方案吗?

sqlite formatting numbers leading-zero

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

sqlite3会压缩数据吗?

我有一个7.4Gb的csv文件.使用python脚本将其转换为sqlite数据库后,输出DB为4.7Gb,约为原始大小的60%.

csv有大约150,000,000行.它有标题:

tkey,ipaddr,healthtime,numconnections,policystatus,activityflag
Run Code Online (Sandbox Code Playgroud)

每一行看起来都像

261846,172.10.28.15,2012-02-03 16:15:00,22,1,1
Run Code Online (Sandbox Code Playgroud)

该脚本使用healthtime将数据拆分为表192表

当我第一次看到这些数字时,我以为我在某个地方犯了错误.如果仅仅将健康时间写入192次而不是150,000,000次的额外效率,我应该期望文件大小的减少有多大?

编辑:我发布这个,我意识到答案.我正在移除大约40%的弦,因此尺寸缩小了40%.

编辑2让我们计算纯文本之间的大小差异:

"261846,172.10.28.15,2012-02-03 16:15:00,22,1,1" 
Run Code Online (Sandbox Code Playgroud)

和数据库条目:

db(261846,'172.10.28.15',22,1,1)
Run Code Online (Sandbox Code Playgroud)

首先,我们以纯文本表示从46个字符删除到26个字符.

剩下的字符是:

"261846,172.10.28.15,22,1,1"
Run Code Online (Sandbox Code Playgroud)

或26个字节.如果每个整数需要以32位(4字节)存储,那么我们有:

12字节(ipaddr)+ 4字节*4(整数字段)= 28字节.

所以看起来转换为整数会使存储效率稍微降低,而我所有的收益都会减少每行中存储的字符数.

python sqlite

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

SQL错误:滥用聚合

SQLite版本3.4.0聚合函数有什么问题?另外,我怀疑ORDER BY不会起作用.如何改写这个?

sqlite> SELECT p1.domain_id, p2.domain_id, COUNT(p1.domain_id) AS d1, COUNT(p2.domain_id) AS d2
   ...> FROM PDB as p1, Interacting_PDBs as i1, PDB as p2, Interacting_PDBs as i2
   ...> WHERE p1.id = i1.PDB_first_id
   ...> AND p2.id = i2.PDB_second_id
   ...> AND i1.id = i2.id
   ...> AND d1>100
   ...> AND d2>100
   ...> ORDER BY d1, d2;
SQL error: misuse of aggregate: 
sqlite>
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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

cursor.rowcount在python3k中的sqlite3中始终为-1

我试图在我的Python3k程序中得到rowcount一个sqlite3 cursor,但我很困惑,因为rowcount它始终是-1,尽管Python3文档说(实际上它是矛盾的,它应该是None).即使在取出所有行之后,rowcount仍然留在-1.这是一个sqlite3错误吗?我已经检查过表中是否有行.

我可以绕过这个检查,如果一个fetchone()返回不同的东西None,但我认为这个问题很好讨论.

谢谢.

python database sqlite

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

将内存数据库保存到磁盘

我在c ++中通过sqlite创建了一个数据库.

db已在内存中创建(使用文件名中的":memory:"参数),以便具有非常快速的行为.

数据库由以下行创建:

sqlite3* mem_database;
if((SQLITE_OK == sqlite3_open(":memory:", &mem_database)){
    // The db has been correctly created and
    // I can do some stuff with it.
}
sqlite3_close(mem_database);
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何将内存数据库写入磁盘?(当然是通过c/c ++).

我读了一些关于ATTACH和DETACH sqlite命令的内容,但我可以让它们只使用sqlite交互式shell(而不是c/c ++代码).

映入眼帘.

c c++ database sqlite in-memory

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

使用select语句锁定[SQLITE_BUSY]数据库文件

如果我对我的网络应用程序运行多个线程,我得到:

java.sql.SQLException: [SQLITE_BUSY]  The database file is locked (database is locked)
    at org.sqlite.DB.newSQLException(DB.java:383)
    at org.sqlite.DB.newSQLException(DB.java:387)
    at org.sqlite.DB.execute(DB.java:339)
    at org.sqlite.PrepStmt.executeQuery(PrepStmt.java:75)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
Run Code Online (Sandbox Code Playgroud)

我知道只有一个线程可以写入sqlite数据库,但我只是从数据库中读取.那么为什么我会收到此错误消息?

顺便说一句:我的连接池看起来像这样:

<bean class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" id="dataSource">
    <property name="driverClassName" value="${database.driverClassName}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
    <property name="initialSize" value="1" />
    <property name="maxActive" value="2" />
    <property name="maxIdle" value="1" />
    <property name="poolPreparedStatements" value="true" />
</bean>
Run Code Online (Sandbox Code Playgroud)

设置是:Java 1.6,Tomcat 7.0.34,Spring 3.2,Hibernate 3.6.9和sqlite3 3.7.2

关心罗杰

java sqlite hibernate jpa

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

"未知命令syncdb"运行"python manage.py syncdb"

我想创建一个名为"database1.sqlite"的数据库的表,所以我运行命令:

python manage.py syncdb

但是当我执行命令时,我收到以下错误:

未知命令:'syncdb'输入'manage.py help'以供使用.

但是当我跑步的时候

manage.py帮助

我没有看到任何可疑的替代命令

python manage.py syncdb

我使用的Python版本:3.4.2 Django的版本我使用:1.9

如果有人能帮助我解决这个问题,我将非常感激.

提前问候并表示感谢

sqlite django python-3.x django-1.9

24
推荐指数
3
解决办法
6万
查看次数

Android JUnit4测试 - 从哪里获取上下文?

我必须构建一个使用sqlite的应用程序.现在我想写单元测试.这些单元测试应该测试我的课程SQLiteBridge.SQLiteBridge为每个子类Model提供DAO.

现在我遇到了一个问题,我需要一个上下文来创建我的SQLiteBridge.SQLiteBridge在系统上创建和处理SQLite数据库..

从哪里获取Context-Object?

我的设置就像在这里(所以我使用的是Junit4 [感谢上帝]):http: //tools.android.com/tech-docs/unit-testing-support

编辑:我希望有一种方式像旧AndroidTestCase的扩展而不会失去Junit4.:)

sqlite android unit-testing android-context

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