我可以在sqlite的create table命令中的列上创建索引吗?
我在Android shell的sqlite3中尝试了以下命令.它似乎工作.
sqlite> create table mytest (id integer indexed);
sqlite> .schema
CREATE TABLE mytest (id integer indexed);
Run Code Online (Sandbox Code Playgroud)
但是,在sqlite的查询语言规范中,不支持指定要编制索引的列:
http://www.sqlite.org/lang_createtable.html
我错过了什么?
谢谢.
我的应用程序使用未捕获的异常处理程序,在应用程序崩溃时将堆栈跟踪发送给我.我经常从随机用户那里得到这份报告.
我无法复制它,数据库的打开总是在我的情况下成功.这不是存储在外部SD卡上的数据库,只是打开的数据库SQLiteOpenHelper(context, "SomeName", null, someVersionCode).
你有这方面的经验吗?在打开数据库之前我可以检查哪些可能性?
谢谢!
android.database.sqlite.SQLiteException: unable to open database file
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
at android.app.ActivityThread.access$2200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: unable to open database file
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1698)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:739)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:761)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:754)
at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:476)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
Run Code Online (Sandbox Code Playgroud) 我需要删除SQLite表中的行,其中行ID在另一个表中不存在.SELECT语句返回正确的行:
SELECT * FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
Run Code Online (Sandbox Code Playgroud)
但是,delete语句会从SQLIte生成错误:
DELETE FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
Run Code Online (Sandbox Code Playgroud)
错误是:SQLite错误1 - 接近"左":语法错误.我可以使用另一种语法吗?
我正在学习本教程,但是当我尝试推送到Heroku时失败了.似乎缺少"sqlite3.h".我是新手,所以我不确定哪些信息可以帮助人们诊断问题,所以这就是一切:).我在Mac OS X 10.7 Lion上运行.以下是我正在使用的所有内容的版本:
Amits-MacBook-Air-2:demo_app amitgupta$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]
Amits-MacBook-Air-2:demo_app amitgupta$ rails -v
Rails 3.2.3
Amits-MacBook-Air-2:demo_app amitgupta$ sqlite3 -version
3.7.11 2012-03-20 11:35:50 00bb9c9ce4f465e6ac321ced2a9d0062dc364669
Amits-MacBook-Air-2:demo_app amitgupta$ heroku -v
2.25.0
Amits-MacBook-Air-2:demo_app amitgupta$ port -v
MacPorts 2.0.4
Entering interactive mode... ("help" for help, "quit" to quit)
[RailsApps/demo_app] > quit
Goodbye
Run Code Online (Sandbox Code Playgroud)
当我尝试推送到Heroku时:
Amits-MacBook-Air-2:demo_app amitgupta$ heroku create --stack cedar
Creating floating-stream-8009... done, stack is cedar
http://floating-stream-8009.herokuapp.com/ | git@heroku.com:floating-stream-8009.git
Amits-MacBook-Air-2:demo_app amitgupta$ git push heroku master
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
Counting objects: …Run Code Online (Sandbox Code Playgroud) 在定义关系时,我想将属性更新为插入时的时间戳.例如,我现在有一张工作台
CREATE TABLE t1(
id INTEGER PRIMARY KEY AUTOINCREMENT,
time TIMESTAMP
DEFAULT CURRENT_TIMESTAMP,
txt TEXT);
Run Code Online (Sandbox Code Playgroud)
这是在插入时更新时间戳,例如,insert into t1 (txt) values ('hello')添加行1|2012-07-19 08:07:20|hello|.但是,我希望这个日期格式化为unixepoch格式.
我阅读了文档,但目前尚不清楚.例如,我修改了表关系,time TIMESTAMP DEFAULT DATETIME('now','unixepoch')但是我得到了一个错误.在这里,就像在文档中一样,now是我的时间字符串并且unixepoch是修饰符,但它不起作用.有人可以帮助我如何将其格式化为unixepoch时间戳吗?
我有一个包含一些SQL命令的文件,如下所示:
CREATE DATABASE IF NOT EXISTS `db_name`;
USE `db_name`;
CREATE TABLE IF NOT EXISTS `customers` (
`id` int(10) unsigned NOT NULL,
`f_name` varchar(50) DEFAULT NULL,
`l_name` varchar(50) DEFAULT NULL,
`company_name` varchar(200) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`phone` varchar(25) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `customers` (`id`, `f_name`, `l_name`, `company_name`, `email`, `phone`) VALUES
...
...
...
Run Code Online (Sandbox Code Playgroud)
我想使用这些命令创建一个SQLite3数据库文件,以便在Python中轻松使用它.
我如何在Ubuntu上做到这一点?
我需要在我们的一个产品中集成一个数据库,我想知道哪一个更适合我们的需求(简单的自动部署,没有管理,良好的性能),而sqlite似乎是一个很好的解决方案.问题是数据库可能面临高并发问题:每次客户端连接到运行数据库的服务器时,都会通过PHP(Apache)访问它.一个客户端大约每10秒钟连接(并执行一次INSERT查询)到服务器,并且可能有超过100个客户端在运行.
执行INSERT查询时,sqlite会在特定时间锁定整个数据库一段时间.有没有办法计算持续时间?如果这是不可能的,你认为sqlite(v3.3.7)仍然适应上述条件吗?
我正在尝试通过交叉编译为Zynq板(ARM架构)构建C应用程序.当我输入make而不提及ARM拱门时,它在我的笔记本电脑上工作正常.但是一旦我修改了Makefile,我就会收到一条错误信息:
main.c:20:43: fatal error: sqlite3.h: No such file or directory
#include "sqlite3.h" //library for sqlite3
^
compilation terminated.
make: *** [ws_temp_server] Error 1
Run Code Online (Sandbox Code Playgroud)
Makefile看起来像这样:
SOURCE=lib/base64_enc.c lib/websocket.c lib/sha1.c lib/sqlite/sqlite3.c main.c
CC = arm-xilinx-linux-gnueabi-gcc
LDFLAGS=-lpthread -ldl
INCLUDES=lib/
PROGRAM=ws_temp_server
all: $(PROGRAM)
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
clean:
rm $(PROGRAM)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?感谢您提供的任何帮助.
作为一个Xamarin开发人员,我曾经使用Sqlite作为移动数据库,
最近Realm出现了.
关于它们在性能和易用性方面的差异的任何想法..等等?
使用任何一种方法的最佳做法是什么?
我在SQL Server数据库中的服务器上有数据.我可以通过REST调用访问我控制的C#ASP.Net Web.API,它将返回json数据.可能我可以得到它来返回其他格式的数据,但我不确定.我可以完全访问服务器应用程序和它创建的json.
在我的开发Mac上,我使用DB Browser for SQLite和Xamarin来开发一个多平台的应用程序.我创建了一个小的SQLite数据库.
如何从服务器上的某些表中导入/插入JSON数据到我在MAC上创建的SQLite数据库中的表?我需要手动执行此操作,但我想自动执行导入bash脚本的过程或类似于我可以使用命令运行的过程.
我已经研究了这个,但似乎没有找到任何如何做的例子,所以我开了一笔赏金,希望有人可以给出一个对我和其他人有很大帮助的答案.