我的SQLite数据库有5列,我想更新数据。
它是第一次创建的,只有我必须更新它工作的一个列。但现在我意识到我必须更新2列。我的应用程序有一个自定义列表视图,它由这4列(id列除外)创建。
我必须更新2列。它们是第三栏和第四栏。首先,在我创建的数据库中,我必须更新我可以通过数据库中的id找到的第三列。但是现在,我试图更新第三栏和第四栏。我这样做是因为第四列是颜色的整数,我想根据第三列值更新颜色我的列表视图。
我正在寻找我的答案,但我没有找到。我怎么能解决它?
我的数据库添加方法;
recv()
我的数据库更新方法;
public boolean addData(String item , String number ) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, item);
contentValues.put(COL3 , number);
contentValues.put(COL4, "50" ); //third column
contentValues.put(COL5 , "#27fbf0"); // Fourth column
Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);
long result = db.insert(TABLE_NAME, null, contentValues);
//if date as inserted incorrectly it will return -1
if (result == -1) {
return false;
} else {
return true;
}
}
如何使用新值将颜色设置为数据库; sonuc是新的价值。它转到COL4
public void updateName(String newName, int id, String oldName,String newboya,String oldboya){
SQLiteDatabase db = this.getWritableDatabase();
String query = "UPDATE " + TABLE_NAME + " SET " +
COL4 + " = '" + newName + "' AND " +
COL5 + " = '" + newboya+ "' WHERE " +
COL1 + " = '" + id + "'" + " AND " +
COL4 + " = '" + oldName + " AND " + //third column
COL5 + " = '" + oldboya+ "'"; // Fourth column
Log.d(TAG, "updateName: query: " + query);
Log.d(TAG, "updateName: Setting name to " + newName);
db.execSQL(query);
}
How to I create my customized listview ;
while(data.moveToNext()){
listDataId.add(data.getString(0));
listData.add(data.getString(1));
listDatanumber.add(data.getString(2));
listDataoran.add(data.getString(3));
listDataBoya.add(data.getString(4));
}
liste.setAdapter(oyunTextView);
}
class OyunTextView extends BaseAdapter {
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = getLayoutInflater().inflate(R.layout.oyuntextview, null);
TextView namesbox = (TextView) convertView.findViewById(R.id.isim);
sayılar = (TextView) convertView.findViewById(R.id.sayı);
namesbox.setText(listData.get(position));
sayılar.setText(listDataoran.get(position));
convertView.setBackgroundColor(Color.parseColor(listDataBoya.get(position)));
return convertView;
}
}
我的logcat:
sonuc = Integer.valueOf(old) + toplamaislemi;
if (sonuc >= 10 && sonuc < 19){ //20-10
boyayazı = "#032E28" ;
}
//
if (sonuc <0 || sonuc ==0 ){
sonuc = 0;
boyayazı = "#121210";
Toast.makeText(AnaMenu.this,
"Bu kişi için en düşük orana ulaştınız.Artık bu kişi ile eşleştirilmeyeceksiniz.",
Toast.LENGTH_LONG).show();
}
int se = Integer.parseInt(listDataId.get(selec));
String oldboya = listDataBoya.get(selec);
mDatabaseHelper.updateName(String.valueOf(sonuc), se, old ,boyayazı , oldboya );
oyunTextView.notifyDataSetChanged();
Intent diger = new Intent(AnaMenu.this,AnaMenubos.class);
startActivity(diger);
AnaMenu.this.finish();
}
} ) .show();
}
答案 0 :(得分:0)
您可以使用此代码段来更新数据库。参数是自我解释的。
public String update(String table, ContentValues data, String where, String[] whereArgs) {
SQLiteDatabase db = getWritableDB();
//String where = "id=?";
//String[] whereArgs = new String[] {String.valueOf(id)};
try {
long returnId = db.update(table, data, where, whereArgs);
if (returnId > 0) {
db.close();
return "Success";
} else {
db.close();
return "fail";
}
} catch (Exception e) {
String error = e.getMessage().toString();
db.close();
return error;
}
}
可以像这样进行通话。 productDetailsContentValues是具有关联值的列名(在这种情况下,您要更新的值)。 &#34;其中&#34;是数据库行的指针。这里我们选择带有id的行(它应该是唯一的)。然后我们通过计算记录来检查行是否存在。如果该行存在,我们将使用表中的内容值进行更新。
ContentValues productDetailsContentValues = new ContentValues();
productDetailsContentValues.put("barcode", aProduct.getProduct().getBarcode());
productDetailsContentValues.put("code", aProduct.getProduct().getCode());
String where = " id = " + aProduct.getProduct().getId();
if (databaseHelper.recordCount(DatabaseInfo.DATABASE_TABLE_PRODUCT, where) > 0) {
databaseHelper.update(DatabaseInfo.DATABASE_TABLE_PRODUCT, productDetailsContentValues, where, null);
} else {
long id = databaseHelper.insert(DatabaseInfo.DATABASE_TABLE_PRODUCT, productDetailsContentValues);
}