如果实际上没有插入记录,我想在sqlite表中插入一条记录.
假设它有三个字段pk,name,address
如果没有预先添加该名称,我想用名称插入新记录.
我们可以在一个Query中执行此操作.似乎有时与SQL查询略有不同.
我正在寻找一个非常简单的ORM框架,用于Android上的SQLite.我一直在测试ActiveAndroid,但是没有一个例子能够在Eclipse上构建.
那么,人们如何在SQLite for Android中实现"多对多"关系?您如何反映有关删除行并保证数据库完整性的级联?
我有一个需要包含产品的SQLite数据库.这些产品具有固定格式的复合产品编号,包括类别,组和产品编号(cccccc.gg.ppp).每次插入新产品时,都应使用类别和组编号构建新产品编号,然后使用该编号增加1中的最高产品编号.
为此,我考虑将所有三个数字存储在单独的字段中,并使用视图动态组合产品编号.为了实现这一点,我需要添加前导零,因为产品编号的格式是固定的.
但是,我似乎无法找到一个内置的SQLite函数,它可以让我这样做...... :-(
我宁愿不写自定义函数,因为我们可能不得不与其他开发人员共享数据库,以便他们从中读取数据; 我不知道他们将使用什么平台或语言.
可以这样做吗?或者我们必须找到不同的解决方案吗?
我有一个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字节.
所以看起来转换为整数会使存储效率稍微降低,而我所有的收益都会减少每行中存储的字符数.
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) 我试图在我的Python3k程序中得到rowcount一个sqlite3 cursor,但我很困惑,因为rowcount它始终是-1,尽管Python3文档说(实际上它是矛盾的,它应该是None).即使在取出所有行之后,rowcount仍然留在-1.这是一个sqlite3错误吗?我已经检查过表中是否有行.
我可以绕过这个检查,如果一个fetchone()返回不同的东西None,但我认为这个问题很好讨论.
谢谢.
我在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 ++代码).
映入眼帘.
如果我对我的网络应用程序运行多个线程,我得到:
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
关心罗杰
我想创建一个名为"database1.sqlite"的数据库的表,所以我运行命令:
python manage.py syncdb
但是当我执行命令时,我收到以下错误:
未知命令:'syncdb'输入'manage.py help'以供使用.
但是当我跑步的时候
manage.py帮助
我没有看到任何可疑的替代命令
python manage.py syncdb
我使用的Python版本:3.4.2 Django的版本我使用:1.9
如果有人能帮助我解决这个问题,我将非常感激.
提前问候并表示感谢
我必须构建一个使用sqlite的应用程序.现在我想写单元测试.这些单元测试应该测试我的课程SQLiteBridge.SQLiteBridge为每个子类Model提供DAO.
现在我遇到了一个问题,我需要一个上下文来创建我的SQLiteBridge.SQLiteBridge在系统上创建和处理SQLite数据库..
从哪里获取Context-Object?
我的设置就像在这里(所以我使用的是Junit4 [感谢上帝]):http: //tools.android.com/tech-docs/unit-testing-support
编辑:我希望有一种方式像旧AndroidTestCase的扩展而不会失去Junit4.:)
sqlite ×10
android ×2
database ×2
python ×2
c ×1
c++ ×1
crud ×1
django ×1
django-1.9 ×1
formatting ×1
hibernate ×1
in-memory ×1
java ×1
jpa ×1
leading-zero ×1
many-to-many ×1
numbers ×1
orm ×1
python-3.x ×1
sql ×1
unit-testing ×1