我有下表
CREATE TABLE actions (id INTEGER PRIMARY KEY, key1 NUMERIC, key2 NUMERIC);
Run Code Online (Sandbox Code Playgroud)
我甚至不确定如何解释这个,所以我认为最好我举个例子:
id key1 key2
1 1 1
2 1 2
3 1 1
4 2 1
5 2 3
Run Code Online (Sandbox Code Playgroud)
输出这样的东西:
key1 key2 count(id)
1 1 2
1 2 1
2 1 1
2 3 1
Run Code Online (Sandbox Code Playgroud)
我试过这样的东西,但它不起作用,因为我需要key1字段不是唯一的:
Select key1,key2,count(id) from actions group by key2, order by key1
Run Code Online (Sandbox Code Playgroud)
非常感谢
我刚刚启动并运行了我的第一个SQLite数据库但是为了重现它我想要一个快速清除db文件的方法(所以我可以openOrCreateDatabase再次调用我的方法)
第一个问题:我在整个网络上看到了这一点,/data/data/PKG/databases/但这究竟存放在一台Windows机器上?它似乎不在我的本地项目文件夹中,因为当我做一个简单的git status,*.db创建成功后没有列出任何文件.
此外,如果我想清除这是一个简单的删除和模拟器将知道重新创建这个?如果不是,我怎么能从模拟器中清除它?(想到iPhone在这里你必须删除并重新将应用程序推送到模拟器以清除它并重新创建数据库)
目前我正在考虑通过SQlite数据库替换单用户.NET C#Windows窗体应用程序上的Microsoft Jet MDB数据库的使用.
我的目标是降低Jet驱动程序的安装要求以及Jet安装损坏时的一些令人讨厌的错误(我们现在有客户报告这些错误).
我对性能的质疑是:
是否有任何性能基准测试比较MDB和SQLite对相当小的数据集?
或者是否有任何开发人员已经采取了这一步骤,并可以根据自己的经验讲述一些故事?
(我现在谷歌搜索几个小时没有成功)
更新
虽然数据库不包含那么多记录和表,但我认为性能仍然是一个问题,因为数据经常被访问.
该应用程序是一个所谓的"桌面CMS系统",它呈现HTML页面; 在渲染过程中,正在访问大量数据并且正在执行大量SQL查询.
更新2
刚刚发现这个文档表明了一些速度比较,遗憾的是没有MDB,据我所知.
更新3
根据要求,一些数字:
更新4
换句话说:我当前的MDB实现没有任何性能问题.我问这个问题是为了感觉在使用SQLite而不是MDB时性能是否相等(或更好).
我有一个SQLite数据库,我需要执行以下操作:仅保留最后N条记录,按日期排序.你是怎样做的?
我希望我的sqlite3输出由制表符分隔.-column选项不适合我,因为带有空格和我的值的单独记录有空格但没有制表符.
如果我使用交互式sqlite3我可以使用.mode tab.单行命令有-separator选项,但我不知道如何在那里添加一个选项卡,它被解释为一个不是文字的选项卡(可能带有和ASCII代码?)
有什么建议?我发现的所有谷歌示例都是针对交互式sqlite3的.
目前我正在使用蛮力方法:
sqlite3 -header mydb "select * from table1" | tr \| '\t' > myoutput
Run Code Online (Sandbox Code Playgroud) 所以我在System.Data.SQLite和使用多个事务时遇到了一个有趣的问题.基本上我有以下代码失败:
using (IDbConnection connection1 = new SQLiteConnection("connectionstring"), connection2 = new SQLiteConnection("connectionstring"))
{
connection1.Open();
connection2.Open();
IDbTransaction transaction1 = connection1.BeginTransaction();
IDbTransaction transaction2 = connection2.BeginTransaction(); // Fails!
using(IDbCommand command = new SQLiteCommand())
{
command.Text = "CREATE TABLE artist(artistid int, artistname text);";
command.CommandType = CommandType.Text;
command.Connection = connection1;
command.ExecuteNonQuery();
}
using (IDbCommand command = new SQLiteCommand())
{
command.Text = "CREATE TABLE track(trackid int, trackname text);";
command.CommandType = CommandType.Text;
command.Connection = connection2;
command.ExecuteNonQuery();
}
transaction1.Commit();
transaction2.Commit();
}
Run Code Online (Sandbox Code Playgroud)
从我所看到的,似乎System.Data.SQLite应该支持嵌套和扩展顺序事务.代码在第7行(声明第二个事务)失败,但有以下异常:
System.Data.SQLite.SQLiteException: The database file is locked
System.Data.SQLite.SQLite3.Step(SQLiteStatement …Run Code Online (Sandbox Code Playgroud) 为什么在执行下面的脚本时出现SQLite" 外键不匹配 "错误?
DELETE
FROM rlsconfig
WHERE importer_config_id=2 and
program_mode_config_id=1
Run Code Online (Sandbox Code Playgroud)
这是主表定义:
CREATE TABLE [RLSConfig] (
"rlsconfig_id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
"importer_config_id" integer NOT NULL,
"program_mode_config_id" integer NOT NULL,
"l2_channel_config_id" integer NOT NULL,
"rls_fixed_width" integer NOT NULL
,
FOREIGN KEY ([importer_config_id])
REFERENCES [ImporterConfig]([importer_config_id]),
FOREIGN KEY ([program_mode_config_id])
REFERENCES [ImporterConfig]([importer_config_id]),
FOREIGN KEY ([importer_config_id])
REFERENCES [ImporterConfig]([program_mode_config_id]),
FOREIGN KEY ([program_mode_config_id])
REFERENCES [ImporterConfig]([program_mode_config_id])
)
Run Code Online (Sandbox Code Playgroud)
和引用表:
CREATE TABLE [ImporterConfig] (
"importer_config_id" integer NOT NULL,
"program_mode_config_id" integer NOT NULL,
"selected" integer NOT NULL DEFAULT 0,
"combined_config_id" …Run Code Online (Sandbox Code Playgroud) 这让我在一小时的大部分时间里感到沮丧.
我有以下型号:
sold= models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
以及以下视图代码:
properties = Property.objects.filter(sold=False).order_by('-created_on');
Run Code Online (Sandbox Code Playgroud)
以及我的sqlite3数据库中的以下值:
sqlite> select sold from clients_property;
1
1
1
1
1
Run Code Online (Sandbox Code Playgroud)
并且以下模板代码可以正常工作(如隐藏已售出的商品):
{% if not property.sold %}
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么查询集过滤器不起作用或为什么我做错了?我试过了:
sold="1"
sold=1
sold="false"
sold=False
sold="False"
Run Code Online (Sandbox Code Playgroud) 您认为从数据库获取所有表名并将其添加到列表的正确方法是什么?
现在就到了这么远:
final ArrayList<String> dirArray = new ArrayList<String>();
SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1);
SQLiteDatabase DB = sqlHelper.getWritableDatabase();
Cursor c = DB.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
c.moveToFirst();
while (c.isAfterLast() == false) {
dirArray.add("n" + c.getColumnIndex("name"));
c.moveToNext();
}
c.close();
Run Code Online (Sandbox Code Playgroud)
但它输出一些"android_metadata"而不是我的表名.所以猜测查询有问题.
谢谢!
如何配置和构建ICU,以便将其链接到我的iPhone应用程序?
我正在维护一个使用SQLite数据库的iPhone应用程序.现在我必须编译ICU支持enabled(SQLITE_ENABLE_ICU).我有最新的ICU来源.
configure我正在使用的标志:
./configure --target=arm-apple-darwin --enable-static --disable-shared
Run Code Online (Sandbox Code Playgroud)
之后,运行gnumake没有错误.
然后我将库添加到我的Xcode项目中.但是当我构建时,我得到50行:
Undefined symbols:
"_uregex_close_48", referenced from:
_icuRegexpDelete in libsqlite3-cerod.a(sqlite3_cerod.o)
"_ubrk_current_48", referenced from:
_icuNext in libsqlite3-cerod.a(sqlite3_cerod.o)
"_ucol_strcoll_48", referenced from:
_icuCollationColl in libsqlite3-cerod.a(sqlite3_cerod.o)
"_u_isspace_48", referenced from:
_icuRegexpFunc in libsqlite3-cerod.a(sqlite3_cerod.o)
"_utf8_countTrailBytes_48", referenced from:
_utf8_countTrailBytes_48$non_lazy_ptr in libsqlite3-cerod.a(sqlite3_cerod.o)
(maybe you meant: _utf8_countTrailBytes_48$non_lazy_ptr)
"_ubrk_next_48", referenced from:
_icuNext in libsqlite3-cerod.a(sqlite3_cerod.o)
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
编辑添加:
当我将库添加到项目中时(右键单击项目名称,然后添加现有...),我得到:
ld: warning: in /Users/eric.grunin/dev/iOS/icu/source/lib/libicudata.a, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: …Run Code Online (Sandbox Code Playgroud)