Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何正确实现SQLite更新命令_Android_Sqlite - Fatal编程技术网

Android 如何正确实现SQLite更新命令

Android 如何正确实现SQLite更新命令,android,sqlite,Android,Sqlite,我希望使用更新命令来更改所有用户的详细信息,具体取决于用户的电子邮件地址。我被告知要使用update命令,但我不知道如何使用,而且在线文档也很差。有人能帮我吗? 这是我的密码: public class DatabaseOperations extends SQLiteOpenHelper { public static int database_version = 1; public String CREATE_QUERY = "CREATE TABLE " + TableD

我希望使用更新命令来更改所有用户的详细信息,具体取决于用户的电子邮件地址。我被告知要使用update命令,但我不知道如何使用,而且在线文档也很差。有人能帮我吗? 这是我的密码:

public class DatabaseOperations extends SQLiteOpenHelper {

    public static int database_version = 1;
    public String CREATE_QUERY = "CREATE TABLE " + TableData.TableInfo.TABLE_NAME + "(" + TableData.TableInfo.USER_NAME + " TEXT," + TableData.TableInfo.USER_PASS + " TEXT," + TableData.TableInfo.USER_EMAIL + " TEXT," + TableData.TableInfo.USER_WEIGHT + " INTEGER," + TableData.TableInfo.USER_GOAL + " INTEGER );";


    public DatabaseOperations(Context context) {
        super(context, TableData.TableInfo.DATABASE_NAME, null, database_version);
        Log.d("Database Operations", "Database Created");
    }

    @Override
    public void onCreate(SQLiteDatabase sdb) {
        sdb.execSQL(CREATE_QUERY);
        Log.d("Database Operations", "Table Created");
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

    }

    public void putInformation(DatabaseOperations dop, String name, String pass, String email, int weight, int goal) {
        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);
        cv.put(TableData.TableInfo.USER_WEIGHT, weight);
        cv.put(TableData.TableInfo.USER_GOAL, goal);
        long k = SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv);
        Log.d("Database Operations", "One Row Inserted");
        SQ.close();
    }

    public Cursor getInformation(DatabaseOperations dop) {
        SQLiteDatabase SQ = dop.getReadableDatabase();
        String[] columns = {TableData.TableInfo.USER_NAME, TableData.TableInfo.USER_PASS, TableData.TableInfo.USER_EMAIL, TableData.TableInfo.USER_WEIGHT, TableData.TableInfo.USER_GOAL};
        Cursor CR = SQ.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
        return CR;
    }
}
使用数据库exeSQLupdate

通过编辑文本或类似的方式获取所有要更改/更新的数据

在此示例中,为要更新的特定行选择一个ID或名称nombre是一个名称:

String[] args = new String[]{nombre};//name or id whatever you want
                    db.execSQL("UPDATE " + YOUR_TABLE + " SET columnName1='" + data1 + "', columnName2='"+data2+"' WHERE nombre_column=?", args); //using SET you say that the column will be update with a new string
                    Toast.makeText(getApplicationContext(), "ALERT", Toast.LENGTH_LONG).show();
对于更新方法,您需要使用希望更新的值创建ContentValues对象,并使用传入的字符串数组中的电子邮件:

我在所有方法中注意到的另一件事是传入DatabaseOperations引用,因为这个类已经扩展了SQLiteOpenHelper

不要在每个方法中都传递dop,只需使用这个

因此,在每种方法中,不要像这里那样使用dop:

SQLiteDatabase SQ = dop.getWritableDatabase();
您可以参考以下内容:

在DB类中:

要进行更新,请执行以下操作:


我不知道你是否有一个内容提供商模式,但这就是我的更新功能正常的样子

@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    final int match = sUriMatcher.match(uri);
    final SQLiteDatabase database = mDatabase.getWritableDatabase();

    int rowsUpdated = 0;

    switch (match) {
        case USER:
            rowsUpdated = database.update(Database.Tables.USER,
                    values,
                    selection,
                    selectionArgs);
            break;

        case CONTACTLIST:
            rowsUpdated = database.update(Database.Tables.CONTACTLIST,
                    values,
                    selection,
                    selectionArgs);
            break;
....

    }

    getContext().getContentResolver().notifyChange(uri, null);
    return rowsUpdated;
}

用户如何发送电子邮件+=?工作我在哪里输入我希望匹配的电子邮件?@JamesWolfe您只需通过参数将其传递到方法中,就像在putInformation方法中一样。这里唯一的区别是,您需要将它放入一个带有一个条目的字符串数组中。看看这行:String[]args=newstring[]{email}@JamesWolfe让我知道这个代码是否适合您,或者您是否需要更多信息!
SQLiteDatabase SQ = this.getWritableDatabase();
public void updateRow(long rowID, String rowOne, double rowTwo, double rowThree, String rowFour )
{
    // this is a key value pair holder used by android's SQLite functions
    ContentValues values = new ContentValues();
    values.put(TABLE_ROW_ONE, rowOne);
    values.put(TABLE_ROW_TWO, rowTwo);
    values.put(TABLE_ROW_THREE, rowThree);
    values.put(TABLE_ROW_FOUR, rowFour);

    // ask the database object to update the database row of given rowID
    try {
        db.update(TABLE_NAME, values, TABLE_ROW_ID + "=" + rowID, null);}
    catch (Exception e) {
        Log.e("DB Error", e.toString());
        e.printStackTrace();
    }
}
//Get an instance of the DB
//db.getInstance();
db.updateRow(rowID, rowOne, rowTwo, rowThree, rowFour);
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    final int match = sUriMatcher.match(uri);
    final SQLiteDatabase database = mDatabase.getWritableDatabase();

    int rowsUpdated = 0;

    switch (match) {
        case USER:
            rowsUpdated = database.update(Database.Tables.USER,
                    values,
                    selection,
                    selectionArgs);
            break;

        case CONTACTLIST:
            rowsUpdated = database.update(Database.Tables.CONTACTLIST,
                    values,
                    selection,
                    selectionArgs);
            break;
....

    }

    getContext().getContentResolver().notifyChange(uri, null);
    return rowsUpdated;
}