如何从sql server插入sqlite中的更新记录

时间:2015-01-17 07:50:48

标签: android sql-server sqlite

在我的应用程序中,我从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

3 个答案:

答案 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;
}