在我的应用程序中,我从sql server获取记录并在按钮单击时存储在sqlite中,这工作正常但我的问题是在每个按钮上单击记录的数量加倍。例如如果sql server有50条记录,sqlite在第一个按钮上取50条记录点击第二个按钮点击记录为100,依此类推。
我希望sqlite存储与sql server相同的记录数。我搜索了这个东西但是也不明白我在android中的新东西。如果我的问题不清楚,任何帮助都将受到赞赏和抱歉。
这是用于在sqlite中插入记录的代码。
public boolean insertUserData(String user_id, String user_pwd,String ff_code, String ff_name, String terr_code, String dg_code,String dist_code, String ff_mob,String ff_mgr, String imeino) {
Log.e(" inserting user details", "yes");
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(CONTACTS_COLUMN_USER_ID, user_id);
contentValues.put(CONTACTS_COLUMN_USER_PWD, user_pwd);
contentValues.put(CONTACTS_COLUMN_FF_CODE, ff_code);
contentValues.put(CONTACTS_COLUMN_FF_NAME, ff_name);
contentValues.put(CONTACTS_COLUMN_TERR_CODE, terr_code);
contentValues.put(CONTACTS_COLUMN_DG_CODE, dg_code);
contentValues.put(CONTACTS_COLUMN_DIST_CODE, dist_code);
contentValues.put(CONTACTS_COLUMN_FF_MOB, ff_mob);
contentValues.put(CONTACTS_COLUMN_ff_mgr, ff_mgr);
contentValues.put(CONTACTS_COLUMN_IMEI_NO, imeino);
db.insert("user_detail", null, contentValues);
return true;
}enter code here
答案 0 :(得分:0)
您应该在PRIMARY KEY
表定义中将字段定义为user_detail
,以防止插入重复记录。似乎user_id
是一个不错的选择。
答案 1 :(得分:0)
如果服务器的数据可以更改,则必须先删除任何旧数据,然后才能插入新数据。
如果您的行具有声明为PRIMARY KEY的未更改ID,则可以使用replace而不是insert
。
答案 2 :(得分:0)
一种解决方案是:
这将是Inseret N-Times(按钮点击)
INSERT INTO book(id, name) VALUES(1001, 'Programming')
尝试重现:
INSERT OR REPLACE INTO book(id, name) VALUES(1001, 'Programming')
另一种解决方案是:
检查主键是否已插入
public boolean CheckAcnoFound(int acno)
{
Cursor curchkacno;
curchkacno = mCon.DataFetch("select acno from acledger where acno="
+ acno );
if (curchkacno.getCount() != 0)
return true;
else
return false;
}
插入记录:
if (CheckAcnoFound((Integer.parseInt(xAcLedgerAcNo)))
{
Your Code
}
DataFetch方法:
public Cursor DataFetch(String xQuery) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(xQuery, null);
return cursor;
}