Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从sql server在sqlite中插入更新的记录_Android_Sql Server_Sqlite - Fatal编程技术网

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

Android 如何从sql server在sqlite中插入更新的记录,android,sql-server,sqlite,Android,Sql Server,Sqlite,在我的应用程序中,我从sql server获取记录,并在单击按钮时将其存储在sqlite中,这工作正常,但我的问题是每次单击按钮时记录的数量都会增加一倍。例如,如果sql server有50条记录,sqlite将在第一个按钮上获取50条记录单击第二个按钮单击记录为100,以此类推 我希望sqlite存储的记录数与SQLServer相同。我搜索了这个东西,但也不明白我是安卓的新手。如果我的问题不清楚,任何帮助都将不胜感激 这是我用来在sqlite中插入记录的代码 public boolea

在我的应用程序中,我从sql server获取记录,并在单击按钮时将其存储在sqlite中,这工作正常,但我的问题是每次单击按钮时记录的数量都会增加一倍。例如,如果sql server有50条记录,sqlite将在第一个按钮上获取50条记录单击第二个按钮单击记录为100,以此类推

我希望sqlite存储的记录数与SQLServer相同。我搜索了这个东西,但也不明白我是安卓的新手。如果我的问题不清楚,任何帮助都将不胜感激

这是我用来在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

您应该在
user\u detail
表定义中将字段定义为
PRIMARY KEY
,以防止插入重复记录。似乎
user\u id
是一个不错的选择。

如果服务器的数据可以更改,则必须在插入新数据之前删除所有旧数据

如果您的行具有声明为主键的未更改ID,则可以使用而不是
insert

一种解决方案是:

它将插入N次(通过单击按钮)

试着重现这一点:

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
}
数据提取方法:

public Cursor DataFetch(String xQuery) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(xQuery, null);
    return cursor;
}

是的,服务器数据并不总是保持不变,而是会发生变化。我做了主键,但我的问题还是一样的。您可以用任何示例代码向我演示如何删除旧数据。将
insert
替换为
Replace
public Cursor DataFetch(String xQuery) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(xQuery, null);
    return cursor;
}