由于CoreData已经可以在OS 3.0中用于iPhone,它是否意味着数据持久性的答案并取代所有直接需求SQLite?
还有什么理由可以使用SQLite?什么是SQLitevs.的优点/缺点CoreData?
使用Linux,我想比较两个具有相同模式的SQLite数据库.只会有一些差异.
是否有工具可以输出这些差异?最好将它们输出到命令行,以便我可以grep/sed它们.
SQLite使用SQL,因此一般的SQL工具也可以这样做.
尝试将NOT NULL列添加到现有表时,我收到以下错误.为什么会这样?我试过rake db:reset认为现有记录是问题,但即使重置数据库后,问题仍然存在.你能帮我搞清楚吗?
迁移文件
class AddDivisionIdToProfile < ActiveRecord::Migration
def self.up
add_column :profiles, :division_id, :integer, :null => false
end
def self.down
remove_column :profiles, :division_id
end
end
Run Code Online (Sandbox Code Playgroud)
错误信息
SQLite3 :: SQLException:无法添加带有默认值NULL的NOT NULL列:ALTER TABLE"profiles"ADD"division_id"integer NOT NULL
我最近读到了关于SQLite的内容,并认为我会尝试一下.当我插入一条记录时,它表现良好.但是当我插入一百个它需要五秒钟时,随着记录计数的增加,时间也会增加.可能有什么不对?我正在使用SQLite Wrapper (system.data.SQlite):
dbcon = new SQLiteConnection(connectionString);
dbcon.Open();
//---INSIDE LOOP
SQLiteCommand sqlComm = new SQLiteCommand(sqlQuery, dbcon);
nRowUpdatedCount = sqlComm.ExecuteNonQuery();
//---END LOOP
dbcon.close();
Run Code Online (Sandbox Code Playgroud) 在运行一些关闭数据库的测试,删除它并用测试夹具替换之后,我看到了我的应用程序和数据库文件状态的一些奇怪行为.当我在调试PC上使用工具检查数据库文件时,它与应用程序本身似乎报告的内容不匹配.这种奇怪的行为可能与这个bug有关.
我注意到有两个文件具有与数据库相同的基本名称(具有正常.db扩展名.)文件扩展名是.db-shm和.db-wal,并且每个.db文件都比文件的时间戳更新.
我假设这些是某种类型的临时文件.但是,我想知道应用程序是否被终止,是否应该删除它们?更重要的是,我假设.db在操作系统终止应用程序之前,存储在其中的任何数据都会在文件内更新.它是否正确?
如何在SQLite数据库中存储JSON对象?什么是正确的方法?
一个地方是blob类型列.如果我可以将JSON对象转换为字节数组并使用Fileoutputstream
另一个想法是将文本列存储为String
import org.json.JSONObject;
JSONObject jsonObject;
public void createJSONObject(Fields fields) {
jsonObject = new JSONObject();
try {
jsonObject.put("storedValue1", fields.storedValue1);
jsonObject.put("storedValue2", fields.storedValue2);
jsonObject.put("storedValue3", fields.storedValue3);
jsonObject.put("storedValue4", fields.storedValue4);
jsonObject.put("storedValue5", fields.storedValue5);
jsonObject.put("storedValue6", fields.storedValue6);
} catch (JSONException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将大量数据(550万行)批量加载到SQLite数据库文件中.通过INSERT加载似乎太慢了,所以我试图使用sqlite3命令行工具和.import命令.
如果我手动输入命令,它可以很好地工作,但我不能为我的生活找出如何从脚本(.bat文件或python脚本;我在Windows机器上工作)自动化它.
我在命令行发出的命令是:
> sqlite3 database.db
sqlite> CREATE TABLE log_entry ( <snip> );
sqlite> .separator "\t"
sqlite> .import logfile.log log_entry
Run Code Online (Sandbox Code Playgroud)
但是我尝试的任何东西都不会从bat文件或python脚本中运行.
我一直在尝试这样的事情:
sqlite3 "database.db" .separator "\t" .import logfile.log log_entry
echo '.separator "\t" .import logfile.log log_entry' | sqlite3 database.db
Run Code Online (Sandbox Code Playgroud)
当然我能以某种方式做到这一点?
我需要在2个应用程序之间共享一个数据库.我知道数据库将在/ data/data/MY_PACKAGE/databases /上创建.由于包名称不同,我可以在任一应用程序上创建数据库时定义一个包名的路径吗?谢谢.
我希望在使用Rails进行开发时查看数据库中的数据(实际上在所有3个开发,测试和生产中).我没有碰过这些配置,所以应该很容易,但我找不到任何有用的信息.
我不知道连接字符串是什么或输入它的位置,因为Aptana(v.3)似乎缺少我从Eclipse中知道的旧的数据源资源管理器视图.有人能指出我正确的方向吗?
编辑:我正在研究linux - Mint 12