标签: android-sqlite

SQL:按优先级排序,但最后输入0

我有一个名为"priority"的(int)列.当我选择我的项目时,我希望最高优先级(最低编号)是第一个,最低优先级(最高编号)是最后一个.

但是,没有优先级的项目(当前优先级为0)应该在具有优先级的列之后由其他列列出.

换一种说法.如果我有这些优先事项:

 1 2 0 0 5 0 8 9
Run Code Online (Sandbox Code Playgroud)

我该如何对它们进行排序:

 1 2 5 8 9 0 0 0 
Run Code Online (Sandbox Code Playgroud)

我想我可以使用Int.max而不是0,但是0组成了一个很好的默认值,我会尽量保留.

sql sqlite sql-order-by android-sqlite

6
推荐指数
2
解决办法
5973
查看次数

我可以在sqlite的触发器中创建变量吗?

我想创建一个更新触发器,

我可以在“BEGIN”和“END”之间创建一个变量,并通过 select sql 语句的查询设置值吗?然后通过判断这个变量来执行“if”“else”语句

sqlite datatrigger sqliteopenhelper android-sqlite

6
推荐指数
1
解决办法
2480
查看次数

SQL中是否需要分号?

如果我忘了它,它有时会起作用;.但有时却没有.

在JDBC和Android SQLite中,似乎我根本不需要;.我很迷惑.

我什么时候应该使用分号?

sql jdbc android-sqlite

6
推荐指数
1
解决办法
7323
查看次数

在SQLite UPDATE中模拟ORDER BY以处理唯一性约束

我在SQLite 3中有一个表:

sqlite> .schema
CREATE TABLE table1 (id INTEGER PRIMARY KEY NOT NULL,
                     title TEXT UNIQUE NOT NULL,
                     priority INTEGER UNIQUE NOT NULL);
Run Code Online (Sandbox Code Playgroud)

以下是一些示例数据,用于说明:

sqlite> SELECT * FROM table1;
id          title       priority  
----------  ----------  ----------
1           a           1         
2           b           2         
3           c           3         
4           d           4
Run Code Online (Sandbox Code Playgroud)

我希望在priority所有细胞中添加1 priority > 1.这是我的第一次尝试:

sqlite> UPDATE table1 SET priority = priority + 1 WHERE priority > 1;
Error: column priority is not unique
Run Code Online (Sandbox Code Playgroud)

这失败了,大概是因为更新没有排序,允许UPDATE尝试将priority列中的一个单元格设置为现有单元格的值.所以,这是我的第二次尝试:

sqlite> UPDATE table1 SET …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android-sqlite

6
推荐指数
1
解决办法
1246
查看次数

检查SQLite是否正在使用journal_mode = WAL或journal_mode = DELETE的函数

我正在寻找可以帮助我查看启用哪种日志记录模式的函数。.我也在这里查找 了函数列表有用于检查数据库状态sqlite3_db_status(....)的函数,但status参数没有用于检查日志记录的选项模式 有没有功能或任何方法可以找到sqlite db是使用WAL模式还是普通日志模式.. !!


sqlite journaling android-sqlite

6
推荐指数
1
解决办法
3586
查看次数

更改 sqlite 表以在多列上添加唯一约束

我有一个由 sqlite 表支持的 ContentProvider。所以为了创建我的表,我使用了

\n\n
public class H extends SQLiteOpenHelper {\n  @Override\n  public void onCreate(SQLiteDatabase sqliteDatabase) {\n    \xe2\x80\xa6// here I defined my original table without constraints\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

最初创建时,该表具有以下列:姓名、年龄、身高。没有限制。没有什么。

\n\n

现在我需要向表添加约束。所以我增加了 DATABASE_VERSION,然后在 onCreate String 中添加了UNIQUE(name,age) ON CONFLICT REPLACE。\n我的问题是,我应该在方法内部做什么onUpgrade?更简单地说:我如何调用ALTER TABLE仅添加约束?我的尝试失败了

\n\n
ALTER TABLE myTable ADD UNIQUE(name,age) ON CONFLICT REPLACE\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是错误消息:

\n\n
Caused by: android.database.sqlite.SQLiteException: near "CONSTRAINT": syntax error (code 1): , while compiling: ALTER TABLE myTable ADD CONSTRAINT UNIQUE(name,age) ON CONFLICT REPLACE\n#################################################################\nError Code : …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-contentprovider android-sqlite

6
推荐指数
1
解决办法
5249
查看次数

如何在android中使用sqlite fts5创建表?

我想使用 fts5 扩展创建一个表

使用 fts5 创建虚拟表 TABLE_FTS_FOOD_ITEM (content='food_items', Shrt_Desc, Energy_Kcal);

但我收到这个错误。

android.database.sqlite.SQLiteException:没有这样的模块:fts5

早些时候我使用的是 fts4,运行良好。我可以在 android 中将 fts5 与 sqLitedatabase 一起使用吗?

android sqliteopenhelper android-sqlite

6
推荐指数
1
解决办法
2535
查看次数

恢复数据库文件后重新打开房间数据库

DB文件恢复后如何正确重新打开数据库?我在 AppModule 中打开它,如下所示:

@Singleton
@Provides
fun provideDb(app: Application): FastcountDb {
    val db: FastcountDb = Room.databaseBuilder(app, FastcountDb::class.java, AppConfig.DB_NAME + ".db")
            .fallbackToDestructiveMigration()
            .setJournalMode(RoomDatabase.JournalMode.TRUNCATE)
            .build()

    return db
}
Run Code Online (Sandbox Code Playgroud)

当我备份或恢复数据库文件时,我只需调用 RoomDatabase.close() 复制数据库文件,然后需要重新打开数据库。有什么方法可以再次触发provideDb(app:Application)吗?

android kotlin android-sqlite android-room

6
推荐指数
0
解决办法
360
查看次数

使用 Room DB 自定义 OnConflictStrategy

我想设置我自己的冲突列而不是默认主键(在我的情况下只是一个自动增量整数)。所以我的表是:

@Entity(tableName = "users_tab")
data class User(
    @PrimaryKey(autoGenerate = true)
    var id: Int,
    var str1: String,
    var str2: String,
    var str3: String
)

@Dao
interface UserDAO {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(users: List<User>)

}
Run Code Online (Sandbox Code Playgroud)

我想什么REPLACE时候User有相同的str1以及str2我应该如何修改我的Insert注释?

android android-sqlite android-room

6
推荐指数
0
解决办法
650
查看次数

SQLite - 在 SELECT INTO 语句上生成 GUID/UUID

我正在尝试为我的应用程序编写一些测试数据的脚本。我尝试填充的表有一列包含 UUID 的字符串类型。我需要编写一条填充此列的插入语句。

我当前的语句几乎可以工作,但它为所有插入生成相同的 ID。生成的列不必是真正的 UUID,但需要在表中唯一。

我的声明的简化版本如下所示:

SELECT 
null as id,
whi.externalId,
(select lower(hex( randomblob(4)) || '-' || hex( randomblob(2))
         || '-' || '4' || substr( hex( randomblob(2)), 2) || '-'
         || substr('AB89', 1 + (abs(random()) % 4) , 1)  ||
         substr(hex(randomblob(2)), 2) || '-' || hex(randomblob(6)))) as GUID
FROM WorkHerdInventories as whi
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

sql sqlite random blob android-sqlite

6
推荐指数
1
解决办法
5473
查看次数