可以获取包含表的所有列名的行,如下所示:
|id|foo|bar|age|street|address|
Run Code Online (Sandbox Code Playgroud)
我不喜欢用Pragma table_info(bla).
我有一个查询,选择ListView没有限制的行.但是现在我已经实现了一个SharedPreferences用户可以选择将显示多少行ListView,我的SQLite查询不起作用.我这样通过论证:
return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, "LIMIT='" + limite + "'");
Run Code Online (Sandbox Code Playgroud) 谁能告诉我SQLITE支持ANDROID的DATATYPES列表.
我想确认TIME和DATE数据类型.
要在SQLite中截断表,我需要使用以下语法:
DELETE FROM someTable
Run Code Online (Sandbox Code Playgroud)
但是,如果表存在,我该如何截断表?
不幸的是,这会引发错误:
DELETE FROM someTable IF EXISTS
Run Code Online (Sandbox Code Playgroud)
这也不起作用:
DELETE IF EXISTS FROM someTable
Run Code Online (Sandbox Code Playgroud)
谢谢.
我需要将其data.frame导出并导出为CSV文件(或其他内容,但CSV似乎是最简单的格式),因此我可以将其导入SQLite数据库.
但是,看起来write.csv()我需要写一个标题行,而SQLite的.import命令要求我没有标题行.所以这有点不匹配.
如果我尝试省略标题行,会发生以下情况:
> write.csv(mydf, "/tmp/mydf.csv", row.names=F, col.names=F)
Warning message:
In write.csv(mydf, "/tmp/mydf.csv", row.names = F, col.names = F) :
attempt to set 'col.names' ignored
Run Code Online (Sandbox Code Playgroud)
我想知道为什么它的执行,在第一个地方-手册上说"这些包装是故意不灵活.它们的设计,以确保正确的约定是用来写一个有效文件,试图改变append,col.names,sep,dec或者qmethod被忽略,警告." 但我知道规范或其他需要列名的任何内容 - 事实上,大多数工具(Excel等)都没有特别对待它们.
我无法弄清楚下划线字符在SQLite like语句中的作用.通配符%可能与大多数其他SQL数据库中的相同.
那个该死的_角色做了什么?
我正在做这样的事......
conn = sqlite3.connect(db_filename)
with conn:
cur = conn.cursor()
cur.execute( ... )
Run Code Online (Sandbox Code Playgroud)
with自动提交更改.但是文档没有提到关闭连接.
实际上我可以conn在以后的陈述中使用(我已经测试过).因此,似乎上下文管理器没有关闭连接.
我是否必须手动关闭连接.如果我把它打开怎么办?
编辑
我的结论......
__exit__,上下文管理器ONLY通过执行来提交更改conn.commit()with conn并且with sqlite3.connect(db_filename) as conn是同一件事.所以使用其中任何一个仍将使连接保持活跃with 语句不会创建新范围,因此在with的套件内创建的所有变量都可以在其外部访问我正在尝试将数据插入表中.如果列没有数据,我想插入行 - 无论其他列如何.
CREATE TABLE t (
id INTEGER PRIMARY KEY,
name VARCHAR,
other INT
);
INSERT OR IGNORE INTO t (name) VALUES ('a');
INSERT OR IGNORE INTO t (name) VALUES ('a');
INSERT OR IGNORE INTO t (name) VALUES ('a');
Run Code Online (Sandbox Code Playgroud)
根据上面的代码片段,我最终会得到3行,而不是我想象的那样.如果重要的是实际的sql发生在INSTEAD OF INSERT触发器内部,这只是一个简单的测试用例.
我知道SQLite数据库用于移动设备(Android,iPhone),它很轻,只占用Kb空间.SQLite有任何限制吗?我想知道他们是如何不同的.
以下是我的数据库创建代码.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
TIME + " INTEGER, " +
LONGI + " TEXT, "+
LATI + " TEXT, "+
SPEED + " TEXT, "+
ACCU + " TEXT);");
}
Run Code Online (Sandbox Code Playgroud)
然后在这里添加一个数据点代码
private void addGeoDataEntry(double logi, double lati, float speed, float accu) {
SQLiteDatabase db = gpsDataHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TIME, System.currentTimeMillis());
values.put(LONGI, logi+"");
values.put(LATI, lati+"");
values.put(SPEED, speed+""); …Run Code Online (Sandbox Code Playgroud)