【问题标题】:Implementing WHERE in an SQLite INSERT command - Android Studio在 SQLite INSERT 命令中实现 WHERE - Android Studio
【发布时间】:2015-04-20 03:46:19
【问题描述】:

我熟悉 Oracle SQL/PL,但不熟悉 SQLite,我已经设法通过加法操作构建了我的数据库。但是,我想知道如何实现 WHERE 条件,以便稍后将数据添加到特定行。 这是我的添加代码:

public void putInformation(DatabaseOperations dop, String name, String pass, String email){
    SQLiteDatabase SQ = dop.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(TableData.TableInfo.USER_NAME, name);
    cv.put(TableData.TableInfo.USER_PASS, pass);
    cv.put(TableData.TableInfo.USER_EMAIL, email);
    long k = SQ.insert(TableData.TableInfo.TABLE_NAME,null, cv);
    Log.d("Database Operations", "One Raw Inserted");
}

【问题讨论】:

    标签: android sqlite add where


    【解决方案1】:

    我认为您正在寻找 UPDATE 查询:

    public void updateInformation(DatabaseOperations dop, String name, String pass, String email){
        SQLiteDatabase SQ = dop.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(TableData.TableInfo.USER_NAME, name);
        cv.put(TableData.TableInfo.USER_PASS, pass);
        cv.put(TableData.TableInfo.USER_EMAIL, email);
        long k = SQ.update(TableData.TableInfo.TABLE_NAME, cv, TableData.TableInfo.USER_NAME+"=?",new String[]{name});
        Log.d("Database Operations", k+" Rows Updated");
    }
    

    SQLiteDatabase.update docs

    【讨论】:

    • 不,他不是在寻找更新查询。插入查询中可以有 where 子句。
    • 我刚刚从您的链接中找到了这个。 “第二种形式的 INSERT 语句包含 SELECT 语句而不是 VALUES 子句。执行 SELECT 语句返回的每一行数据都会在表中插入一个新条目。如果指定了 column-list,则列数在 SELECT 的结果中必须与列列表中的项目数相同......任何 SELECT 语句,包括复合 SELECT 和带有 ORDER BY 和/或 LIMIT 子句的 SELECT 语句,都可以在 INSERT 语句中使用这种形式的。”无论如何,不​​错的链接人:)
    • :) 哦,我现在明白你的意思了。我仍然认为这不是 OP 想要实现的目标
    • OP 首先提到他来自Oracle SQL/PL 背景,这让我假设他实际上希望插入这个表单。 :)
    • 你能向我解释一下 update() 方法中的参数是什么吗?我了解 TABLE_NAME 和 cv,但其他两个是什么?
    【解决方案2】:

    WHERE condition for adding data later on to a specific row。如果我理解正确,那么它将更新 sqlite 数据库。你可以参考下面的代码。

    public void updateInformation(DatabaseOperations dop, String name, String pass, String email){
        SQLiteDatabase SQ = dop.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(TableData.TableInfo.USER_NAME, name);
        cv.put(TableData.TableInfo.USER_PASS, pass);
        cv.put(TableData.TableInfo.USER_EMAIL, email);
        long index = SQ.update(TableData.TableInfo.TABLE_NAME, cv, TableData.TableInfo.USER_NAME+"=?", new String[] {name});
    }
    

    【讨论】:

    • 不,他不是在寻找更新查询。插入查询中可以有 where 子句。
    • 我怀疑我们有使用 where 子句的插入查询。
    【解决方案3】:

    您不能在插入查询中使用WHERE 条件。 WHERE condition for adding data later on to a specific row. 为此,您可以使用 UPDATE 查询。

    链接:

    http://www.tutorialspoint.com/sqlite/sqlite_update_query.htm

    http://android-er.blogspot.in/2011/06/edit-row-in-sqlite-database-using.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      相关资源
      最近更新 更多