Android 如何正确实现SQLite更新命令
我希望使用更新命令来更改所有用户的详细信息,具体取决于用户的电子邮件地址。我被告知要使用update命令,但我不知道如何使用,而且在线文档也很差。有人能帮我吗? 这是我的密码: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
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;
}