lundi 24 août 2015

Android SQLite cannot stored all record using SQLiteStatement

Something unusual happen with my SQLite.

Have a table with multiple primary key :

public static final String STATEMENT_CREATE 
        = "CREATE TABLE " + TABLE_NAME + " (`usage_type` varchar(1) NOT NULL, `app` varchar(2) NOT NULL, `cond_type` varchar(4) NOT NULL, `access_sequence` varchar(4) NOT NULL, `access_number` int(10) NOT NULL, `cond_counter` int(10) NOT NULL, `cond_field` varchar(30) NOT NULL, PRIMARY KEY (`usage_type`,`app`,`cond_type`,`access_sequence`,`access_number`,`cond_counter`) );";

and insert statement :

public static final String STATEMENT_INSERT_OR_REPLACE
        = "INSERT OR REPLACE INTO " + TABLE_NAME + "(`usage_type`, `app`, `cond_type`, `access_sequence`, `access_number`, `cond_counter`, `cond_field`) VALUES (?,?,?,?,?,?,?);";

When I'm trying to insert with Sqlite Statement :

__sqliteDatabase.beginTransactionNonExclusive();

        SQLiteStatement sqliteStatement = __sqliteDatabase.compileStatement(STATEMENT_INSERT_OR_REPLACE);
        int record = 0;

        for(SoapObject soapObject : vector_be_m_price_keys){
            sqliteStatement.bindString(1, soapObject.getPrimitivePropertyAsString(V.usage_type));
            sqliteStatement.bindString(2, soapObject.getPrimitivePropertyAsString(V.app));
            sqliteStatement.bindString(3, soapObject.getPrimitivePropertyAsString(V.cond_type));
            sqliteStatement.bindString(4, soapObject.getPrimitivePropertyAsString(V.access_sequence));
            sqliteStatement.bindString(5, soapObject.getPrimitivePropertyAsString(V.access_number));
            sqliteStatement.bindString(6, soapObject.getPrimitivePropertyAsString(V.cond_counter));
            sqliteStatement.bindString(7, soapObject.getPrimitivePropertyAsString(V.cond_field));

            sqliteStatement.executeInsert();
            sqliteStatement.clearBindings();
            record += 1;

        }

        __sqliteDatabase.setTransactionSuccessful();
        __sqliteDatabase.endTransaction();

Only 89 of 493 rows which can only stored.

Than I'm curious and try with MySQL :

CREATE TABLE `EX_TABLE` (
  `usage_type` varchar(1) NOT NULL,
  `app` varchar(2) NOT NULL,
  `cond_type` varchar(4) NOT NULL,
  `access_sequence` varchar(4) NOT NULL,
  `access_number` int(10) unsigned NOT NULL,
  `cond_counter` int(10) unsigned NOT NULL,
  `cond_field` varchar(30) NOT NULL,
  PRIMARY KEY (`usage_type`,`app`,`cond_type`,`access_sequence`,`access_number`,`cond_counter`)
)

And running multiple query to insert 493 rows :

INSERT INTO `EX_TABLE` (`usage_type`, `app`, `cond_type`, `access_sequence`, `access_number`, `cond_counter`, `cond_field`) VALUES ('A','V','','Z001',25,2,'VTWEG'),('A','V','','Z001',25,3,'MATNR'),('A','V','','Z0.....

493 rows can be stored.

Whats wrong with my SQLite? Any ideas?

Thanks in advance. Sorry for my English.

Aucun commentaire:

Enregistrer un commentaire