标签: sqlite

execSQL:bindargs 更好吗?

我想知道可以采用 1 或 2 个参数的 execSQL 方法。
为什么使用第二种方法,如果我可以使用对象直接在SQLite db上进行操作?

例如:

db.execSQL("INSERT INTO "+ TableName +" VALUES (null, ?)",
        new Object[] { type.getName() })
Run Code Online (Sandbox Code Playgroud)

这比使用这个更好吗

db.execSQL("INSERT INTO "+ TableName +" VALUES (null,"+  type.getName() +")")
Run Code Online (Sandbox Code Playgroud)

第一个例子更安全吗?
执行时更快?
更容易阅读……
还是一样?

sqlite android android-sqlite

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

使用 Python 时“ON DELETE CASCADE”不起作用

在这里,我提供了一个完全可重现的代码,它演示了整个问题。问题是,当我从“父”表中删除行时,不会删除“子”表中的相应行,即使它们具有ON DELETE CASCADE指定的外键。所以这是代码:

>>> import sqlite3
>>> cnx = sqlite3.connect("mytest.db")
>>> cursor = cnx.cursor()
>>> cnx.execute("BEGIN")
<sqlite3.Cursor object at 0x7f0ab0923490>
>>> cursor.execute("CREATE TABLE test_table (id integer)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("CREATE UNIQUE INDEX id_primary ON test_table(id)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("INSERT INTO test_table (id) VALUES (1),(2),(3)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("CREATE TABLE test_table_2(id_fk integer, txt text,  FOREIGN KEY (id_fk) REFERENCES test_table(id) ON DELETE CASCADE)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("INSERT INTO test_table_2 (id_fk, txt) VALUES …
Run Code Online (Sandbox Code Playgroud)

python sqlite

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

等到数据库查询完成

我很确定我的问题与 Koa 或 SQLite3 的使用没有直接关系,而是与 JavaScript 的一般使用有关。

我有以下几点server.js:

var http = require('http');
var koa = require('koa');
var route = require('koa-route');
var app = koa();
var sqlite3 = require('sqlite3').verbose();
var dbFile = 'coc.db';
var db = new sqlite3.Database(dbFile);

var members = [];

var printMembers = function(name){

        db.each(query, [name], function(err, row){
            members.push(row);
        });

    return members;

}


app.use(route.get('/', index));


function *index() {

    this.body = printMembers("name");

}


app.listen(8008);
console.log('Koa listening on port 8008');
Run Code Online (Sandbox Code Playgroud)

当我启动服务器并localhost:8008第一次访问时,我只得到一个空数组 ( []) 作为响应。这是变量的内容members。当我重新加载时,正如预期的那样,我得到了我的 …

javascript sqlite koa

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

在android中使用MPAndroidChart从数据库中检索数据并在条形图中显示它们

我知道如何使用 MPAndroidChart 在条形图中显示原始数据,但我在实际场景中遇到了问题。我的 sqlite 数据库中有一些数据,我想在条形图中显示它们。请给我一些参考或简单的例子。

数据库表有两列月份和一些数字。例如:一月 = 200,二月 = 300,等等。

我搜索了很多,但找不到合适的。他们要么是 2-3 岁,要么不是我提到的那种类型。

提前致谢。

database sqlite android mpandroidchart

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

SQLite 在不使用循环的情况下获取结果查询中的单行位置

使用 sql 查询,我得到 100 个结果行。我需要知道这 100 行内的单行位置。我有可以循环检查的独特字段,但这需要很长时间。有没有办法可以在查询结果中获得单个项目的位置。

例如:我有一个带有唯一用户 ID 的表(12, 13, 20, 21, 34, 5)。这些用户按创建日期排序。如何id = 34使用 sql 查询获取用户位置?

java sql sqlite android

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

在实体框架\sqlite 中为实体设置状态为修改的最快方法

我有大量的实体,例如 10k 个实体都已更新。我需要一种快速更改状态并最终将它们提交到数据库的方法。

BaseOtiveContext.Entry(Entity).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)

对于批量插入,我可以通过增加范围轻松获得非常快速的结果。

BaseOtiveContext.Contacts.AddRange(Entities)
Run Code Online (Sandbox Code Playgroud)

我为每个更新的实体尝试了并行,但是当集合中的对象被修改时它会抛出一个错误。

我需要一种方法来做到这一点:

BaseOtiveContext.Contacts.AddRange(Entities)
Run Code Online (Sandbox Code Playgroud)

但同时将状态更改为

   .State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)

c# sqlite entity-framework

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

如何使用 Snackbar 撤消操作绕过删除 SQLite 数据

所以,我正在处理一个项目,我想从 RecyclerView 中删除一个项目,但我希望用户能够通过在 Snackbar 中按“撤消”来恢复该项目。RecyclerView 项目从 SQLite 数据库中提取数据,当用户删除一个项目时,它也会从 RecyclerView 和数据库中我的表的相应行中删除它。我的问题是我似乎无法弄清楚如何恢复已删除的数据(SQLite 数据)。

我试图在我的 DataBaseHelper 类中创建一个方法,该方法将位置作为参数,以便我的光标知道要访问哪一行,然后我使用光标将该行的所有值分配给一个 AlarmData(我的 setter 和 getter 类)对象和将其返回给我的适配器类,以便我可以尝试在 Snackbar 的 UNDO 操作方法中恢复表的行。

这是代码:

数据库助手

// Is public AlarmData even legal? that's my setter and getter class
// and the object type I'm trying to return

   public AlarmData recoverAlarms(int position) {

    AlarmData recoverData = new AlarmData();

    String ALARM_RESTORE_QUERY = "SELECT * FROM " + TABLE_ALARMS + " WHERE " + COLUMN_INDEX +
            " = " + position + ";";

    SQLiteDatabase …
Run Code Online (Sandbox Code Playgroud)

sqlite android undo android-recyclerview snackbar

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

如何检查android sqlite中是否存在表

我已经使用 sqlite 插入数据并取回结果,但我所做的是首先显示包含获取的值的列表,如果没有值,则列表显示空视图,指示用户将新项目添加到sqlite 数据库。但是当我尝试这个时,它向我显示一个错误,数据库中不存在这样的表。我想知道如何检查表是否已创建或是否有值。如果没有,如何向用户抛出异常以向表中插入新项目。

数据库:

public class BuisnessDatabaseHandler extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "receiptExample";

// Labels table name
private static final String TABLE_LABELS = "buisnesslabels";
private static final String KEY_ID = "id";
private static final String KEY_IMAGE = "image";
private static final String KEY_STATUS="status";
private static final String KEY_UPLOADSTATUS = "uplaodstatus";
private static final String KEY_USERID="userid";
SQLiteDatabase db;
public BuisnessDatabaseHandler(Context context) {
    super(context, …
Run Code Online (Sandbox Code Playgroud)

sqlite android

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

SQLITE_ERROR - SQL 错误或缺少数据库(“AUTOINCREMENT”附近:语法错误)

我正在尝试在我新创建的 SQLite 数据库中创建一个表。出于某种原因,我收到了 SQLException:

try {
        logger.debug("Trying to create table powerperms_permissions if not exists");
        statement.execute("CREATE TABLE IF NOT EXISTS powerperms_permissions ( "
                + "id INT NOT NULL AUTOINCREMENT,"
                + "uuid VARCHAR ( 64 ) NOT NULL,"
                + "permission VARCHAR ( 64 ) NOT NULL,"
                + "world VARCHAR ( 32 ) NULL,"
                + "PRIMARY KEY ( id ) );");
    } catch (SQLException e) {
        logger.error("Couldn't create permissions table",e);
    }
Run Code Online (Sandbox Code Playgroud)

投掷

[07:49:17 ERROR]: [PowerPerms] Couldn't create permissions table
java.sql.SQLException: [SQLITE_ERROR] SQL error …
Run Code Online (Sandbox Code Playgroud)

java sql sqlite auto-increment

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

sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用0,提供了2个

我正在抓取网站以获取某些详细信息,然后从那里我想将它们保存在数据库中,以下是上述任务的功能:

def store(title, body):
    conn = sqlite3.connect('test2.db')
    print("Connection established")
    conn.execute("insert into crawled (title, body) values (\"%s\", \"%s\");",(title, body))
    conn.commit()
    print("Records Created Successfully")
    conn.close()
Run Code Online (Sandbox Code Playgroud)

但我不断收到此错误:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 2 supplied
Run Code Online (Sandbox Code Playgroud)

我已经浏览了Stack 中所有可用的解决方案,但没有一个解决方案可以解决我的问题,请有人告诉我我的错误。

sqlite

1
推荐指数
1
解决办法
2万
查看次数