내 응용 프로그램에서 SQLite를 구현해야합니다. 나는이 튜토리얼을 따랐다 .. 안드로이드 원에서 데이터베이스 생성 및 사용
모든 것이 잘 작동합니다. 5 열이있는 행 1 개를 삽입했습니다. 이제 1 열의 값만 업데이트하고 나머지는 동일하게 유지합니다.
튜토리얼에는 하나의 업데이트 방법이 있지만 모든 매개 변수가 필요하지만 하나의 열만 업데이트하고 싶습니다.
내 응용 프로그램에서 SQLite를 구현해야합니다. 나는이 튜토리얼을 따랐다 .. 안드로이드 원에서 데이터베이스 생성 및 사용
모든 것이 잘 작동합니다. 5 열이있는 행 1 개를 삽입했습니다. 이제 1 열의 값만 업데이트하고 나머지는 동일하게 유지합니다.
튜토리얼에는 하나의 업데이트 방법이 있지만 모든 매개 변수가 필요하지만 하나의 열만 업데이트하고 싶습니다.
답변:
아래 코드를 사용할 수 있습니다.
String strFilter = "_id=" + Id;
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
myDB.update("titles", args, strFilter, null);
Id
. 같은 것 :String strFilter = "_id='" + Id + "'";
당신은 시도 할 수 있습니다:
db.execSQL("UPDATE DB_TABLE SET YOUR_COLUMN='newValue' WHERE id=6 ");
또는
ContentValues newValues = new ContentValues();
newValues.put("YOUR_COLUMN", "newValue");
db.update("YOUR_TABLE", newValues, "id=6", null);
또는
ContentValues newValues = new ContentValues();
newValues.put("YOUR_COLUMN", "newValue");
String[] args = new String[]{"user1", "user2"};
db.update("YOUR_TABLE", newValues, "name=? OR name=?", args);
이를 수행하는 방법은 모두 튜토리얼에 있습니다.
ContentValues args = new ContentValues();
args.put(columnName, newValue);
db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null);
사용하여 ContentValues
업데이트 된 열과보다 설정 update()
만 업데이트 할 행을 업데이트하려면 명시한다, 테이블과 기준을 가지고하는 방법.
항상 SQL을 실행할 수 있습니다.
update [your table] set [your column]=value
예를 들면
update Foo set Bar=125
SQLiteDatabase 개체는 데이터베이스의 작업 유형에 따라 다릅니다.
자세한 내용은 공식 웹 사이트를 방문하십시오.
https://developer.android.com/training/basics/data-storage/databases.html#UpdateDbRow
SQLite 데이터베이스에서 상담을 조작하는 방법을 설명합니다.
쓰기 모드에서 데이터 저장소를 가져옵니다.
SQLiteDatabase db = mDbHelper.getWritableDatabase();
열 이름이 키인 새 값 맵을 만듭니다.
ContentValues values = new ContentValues();
values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id);
values.put(FeedEntry.COLUMN_NAME_TITLE, title);
values.put(FeedEntry.COLUMN_NAME_CONTENT, content);
새 행을 삽입하고 새 행의 기본 키 값을 반환합니다.
long newRowId;
newRowId = db.insert(
FeedEntry.TABLE_NAME,
FeedEntry.COLUMN_NAME_NULLABLE,
values);
쿼리의 'where'부분을 정의합니다.
String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";
자리 표시 자 순서로 인수를 지정합니다.
String[] selectionArgs = { String.valueOf(rowId) };
SQLiteDatabase db = mDbHelper.getReadableDatabase();
하나의 열에 대한 새 값
ContentValues values = new ContentValues();
values.put(FeedEntry.COLUMN_NAME_TITLE, title);
ID에 따라 업데이트 할 행
String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";
String[] selectionArgs = { String.valueOf(rowId) };
int count = db.update(
FeedReaderDbHelper.FeedEntry.TABLE_NAME,
values,
selection,
selectionArgs);
저는이 클래스를 사용하여 데이터베이스를 처리합니다. 나중에 도움이되기를 바랍니다.
즐거운 코딩입니다.
public class Database {
private static class DBHelper extends SQLiteOpenHelper {
/**
* Database name
*/
private static final String DB_NAME = "db_name";
/**
* Table Names
*/
public static final String TABLE_CART = "DB_CART";
/**
* Cart Table Columns
*/
public static final String CART_ID_PK = "_id";// Primary key
public static final String CART_DISH_NAME = "dish_name";
public static final String CART_DISH_ID = "menu_item_id";
public static final String CART_DISH_QTY = "dish_qty";
public static final String CART_DISH_PRICE = "dish_price";
/**
* String to create reservation tabs table
*/
private final String CREATE_TABLE_CART = "CREATE TABLE IF NOT EXISTS "
+ TABLE_CART + " ( "
+ CART_ID_PK + " INTEGER PRIMARY KEY, "
+ CART_DISH_NAME + " TEXT , "
+ CART_DISH_ID + " TEXT , "
+ CART_DISH_QTY + " TEXT , "
+ CART_DISH_PRICE + " TEXT);";
public DBHelper(Context context) {
super(context, DB_NAME, null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_CART);
}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
db.execSQL("DROP TABLE IF EXISTS " + CREATE_TABLE_CART);
onCreate(db);
}
}
/**
* CART handler
*/
public static class Cart {
/**
* Check if Cart is available or not
*
* @param context
* @return
*/
public static boolean isCartAvailable(Context context) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
boolean exists = false;
try {
String query = "SELECT * FROM " + DBHelper.TABLE_CART;
Cursor cursor = db.rawQuery(query, null);
exists = (cursor.getCount() > 0);
cursor.close();
db.close();
} catch (SQLiteException e) {
db.close();
}
return exists;
}
/**
* Insert values in cart table
*
* @param context
* @param dishName
* @param dishPrice
* @param dishQty
* @return
*/
public static boolean insertItem(Context context, String itemId, String dishName, String dishPrice, String dishQty) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DBHelper.CART_DISH_ID, "" + itemId);
values.put(DBHelper.CART_DISH_NAME, "" + dishName);
values.put(DBHelper.CART_DISH_PRICE, "" + dishPrice);
values.put(DBHelper.CART_DISH_QTY, "" + dishQty);
try {
db.insert(DBHelper.TABLE_CART, null, values);
db.close();
return true;
} catch (SQLiteException e) {
db.close();
return false;
}
}
/**
* Check for specific record by name
*
* @param context
* @param dishName
* @return
*/
public static boolean isItemAvailable(Context context, String dishName) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
boolean exists = false;
String query = "SELECT * FROM " + DBHelper.TABLE_CART + " WHERE "
+ DBHelper.CART_DISH_NAME + " = '" + String.valueOf(dishName) + "'";
try {
Cursor cursor = db.rawQuery(query, null);
exists = (cursor.getCount() > 0);
cursor.close();
} catch (SQLiteException e) {
e.printStackTrace();
db.close();
}
return exists;
}
/**
* Update cart item by item name
*
* @param context
* @param dishName
* @param dishPrice
* @param dishQty
* @return
*/
public static boolean updateItem(Context context, String itemId, String dishName, String dishPrice, String dishQty) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DBHelper.CART_DISH_ID, itemId);
values.put(DBHelper.CART_DISH_NAME, dishName);
values.put(DBHelper.CART_DISH_PRICE, dishPrice);
values.put(DBHelper.CART_DISH_QTY, dishQty);
try {
String[] args = new String[]{dishName};
db.update(DBHelper.TABLE_CART, values, DBHelper.CART_DISH_NAME + "=?", args);
db.close();
return true;
} catch (SQLiteException e) {
db.close();
return false;
}
}
/**
* Get cart list
*
* @param context
* @return
*/
public static ArrayList<CartModel> getCartList(Context context) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
ArrayList<CartModel> cartList = new ArrayList<>();
try {
String query = "SELECT * FROM " + DBHelper.TABLE_CART + ";";
Cursor cursor = db.rawQuery(query, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
cartList.add(new CartModel(
cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_ID)),
cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_NAME)),
cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_QTY)),
Integer.parseInt(cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_PRICE)))
));
}
db.close();
} catch (SQLiteException e) {
db.close();
}
return cartList;
}
/**
* Get total amount of cart items
*
* @param context
* @return
*/
public static String getTotalAmount(Context context) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
double totalAmount = 0.0;
try {
String query = "SELECT * FROM " + DBHelper.TABLE_CART + ";";
Cursor cursor = db.rawQuery(query, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
totalAmount = totalAmount + Double.parseDouble(cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_PRICE))) *
Double.parseDouble(cursor.getString(cursor.getColumnIndex(DBHelper.CART_DISH_QTY)));
}
db.close();
} catch (SQLiteException e) {
db.close();
}
if (totalAmount == 0.0)
return "";
else
return "" + totalAmount;
}
/**
* Get item quantity
*
* @param context
* @param dishName
* @return
*/
public static String getItemQty(Context context, String dishName) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = null;
String query = "SELECT * FROM " + DBHelper.TABLE_CART + " WHERE " + DBHelper.CART_DISH_NAME + " = '" + dishName + "';";
String quantity = "0";
try {
cursor = db.rawQuery(query, null);
if (cursor.getCount() > 0) {
cursor.moveToFirst();
quantity = cursor.getString(cursor
.getColumnIndex(DBHelper.CART_DISH_QTY));
return quantity;
}
} catch (SQLiteException e) {
e.printStackTrace();
}
return quantity;
}
/**
* Delete cart item by name
*
* @param context
* @param dishName
*/
public static void deleteCartItem(Context context, String dishName) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
try {
String[] args = new String[]{dishName};
db.delete(DBHelper.TABLE_CART, DBHelper.CART_DISH_NAME + "=?", args);
db.close();
} catch (SQLiteException e) {
db.close();
e.printStackTrace();
}
}
}//End of cart class
/**
* Delete database table
*
* @param context
*/
public static void deleteCart(Context context) {
DBHelper dbHelper = new DBHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
try {
db.execSQL("DELETE FROM " + DBHelper.TABLE_CART);
} catch (SQLiteException e) {
e.printStackTrace();
}
}
}
용법:
if(Database.Cart.isCartAvailable(context)){
Database.deleteCart(context);
}