【发布时间】:2015-05-26 11:32:52
【问题描述】:
我将数据存储到 SQLite 表中,如果数据已经存在,则更新它,我可以这样做,但是每当我更新现有记录时,它都会保存该记录的另一个副本...
DatabaseDataHelper.java:-
public class DatabaseDataHelper extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "Data";
// Table Name
private static final String TABLE_MEMBER = "Data";
public DatabaseDataHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_MEMBER +
"(Name VARCHAR(50) UNIQUE,"
" Title VARCHAR(50))");
Log.d("CREATE TABLE","Create Table Successfully - classs");
}
public long InsertData(String strName, String strTitle) {
try {
SQLiteDatabase db;
db = this.getWritableDatabase();
ContentValues Val = new ContentValues();
Val.put("Name", strName);
Val.put("Title", strTitle);
long rows = db.insert(TABLE_MEMBER, null, Val);
db.close();
return rows;
} catch (Exception e) {
return -1;
}
}
public long UpdateData(String strName, String strTitle) {
try {
SQLiteDatabase db;
db = this.getWritableDatabase();
ContentValues Val = new ContentValues();
Val.put("Title", strTitle);
long rows = db.update(TABLE_MEMBER, Val, "Name=?",
new String[] { String.valueOf(strName) });
db.close();
return rows;
} catch (Exception e) {
return -1;
}
}
public String[] SelectData(String strName) {
try {
String arrData[] = null;
SQLiteDatabase db;
db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_MEMBER, new String[] { "*" },
"Name=?",
new String[] { String.valueOf(strName) }, null, null, null, null);
if(cursor != null) {
if (cursor.moveToFirst()) {
arrData = new String[cursor.getColumnCount()];
arrData[0] = cursor.getString(0);
arrData[1] = cursor.getString(1);
}
}
cursor.close();
db.close();
return arrData;
} catch (Exception e) {
return null;
}
}
public boolean Exists(String strName) {
SQLiteDatabase db;
db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("select 1 from Data where Name= ?", new String[] { strImageName });
boolean exists = (cursor.getCount() > 0);
cursor.close();
return exists;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_MEMBER);
onCreate(db);
}
public Cursor getAllData() {
String selectQuery = "Select * from "+ TABLE_MEMBER;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
return cursor;
}
}
InsertDataActivity.java:-
public boolean saveData() {
long storeData = databaseDataHelper.InsertData(txtName.getText().toString(), editTitle.getText().toString());
if (storeData <= 0) {
} else
storeData = databaseDataHelper.UpdateData(txtName.getText().toString(),
editTitle.getText().toString());
return true;
}
【问题讨论】:
-
在编辑之前,在数据库中查询是否存在相同的数据。
-
你能显示你用来创建表的查询吗?
-
您正在插入数据 无论如何(并且 storeData 是 1)。
-
这里有什么问题?我已经尽力了
-
你check this了吗?