2014-11-15 74 views
0

我从JSON网址获取值和存储到本地数据库,但是当我在存储数据库我得到插入错误的语句中止在6以下是JSON URL值值不插入到数据库

[{"name":"Test","uuid":"B9407F30-F5F8-466E-AFF9-25556B57FE6D","major_id":"23695","minor_id":"46901","notification":"Test","type":"Image","product_image":"test.com/beacon/staging/images/product_images/visualize1.png"}] 

    String CREATE_TABLE_BEACON = "CREATE TABLE " + TABLE_BEACON + "(" 
       + KEY_NAME + " TEXT,"+ KEY_UUID + " INTEGER PRIMARY KEY,"+ KEY_MAJOR_ID + " INTEGER,"+ KEY_MINOR_ID + " INTEGER,"+ KEY_TYPE + " TEXT)"; 
     db.execSQL(CREATE_TABLE_BEACON); 

登录:

11-15 16:42:53.260: E/SQLiteLog(11819): (20) statement aborts at 6: [INSERT OR REPLACE INTO beacon_details(uuid,type,minor,major,name) VALUES (?,?,?,?,?)] datatype mismatch 
11-15 16:42:53.270: E/SQLiteDatabase(11819): Error inserting uuid=B9407F30-F5F8-466E-AFF9-25556B57FE6D type=Image minor=46901 major=23695 name=Test 
11-15 16:42:53.270: E/SQLiteDatabase(11819): android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:973) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1591) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.database.sqlite.SQLiteDatabase.replace(SQLiteDatabase.java:1507) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at com.estimote.examples.demos.DataBaseHandler.insertBeaconDetails(DataBaseHandler.java:86) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at com.estimote.examples.demos.NotifyDemoActivity$JsonTask.doInBackground(NotifyDemoActivity.java:141) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at com.estimote.examples.demos.NotifyDemoActivity$JsonTask.doInBackground(NotifyDemoActivity.java:1) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
11-15 16:42:53.270: E/SQLiteDatabase(11819): at java.lang.Thread.run(Thread.java:841) 

插入:

DatabaseHandler.java

public long insertBeaconDetails(BeaconDetails beacondetailstore) 
    { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_NAME,beacondetailstore.name); 
     values.put(KEY_UUID,beacondetailstore.uuid); 
     values.put(KEY_MAJOR_ID,beacondetailstore.major); 
     values.put(KEY_MINOR_ID,beacondetailstore.minor); 
     // values.put(KEY_NOTIFICATION,beacondetailstore.notification); 
     values.put(KEY_TYPE,beacondetailstore.type);  
     // values.put(KEY_ACTION,beacondetailstore.action);  


     long rowId = db.replace(TABLE_BEACON, null, values); 
     db.close(); 
     return rowId; 
    } 

MainActivity.java:

beacondetailstore = new BeaconDetails(); 

     beacondetailstore.name = jsonRegion.getString("name"); 
       beacondetailstore.uuid = jsonRegion.getString("uuid"); 
       beacondetailstore.major = jsonRegion.getInt("major_id"); 
       beacondetailstore.minor = jsonRegion.getInt("minor_id");    
       // beacondetailstore.notification=jsonRegion.getString("notification"); 
       beacondetailstore.type = jsonRegion.getString("type"); 
       // beacondetailstore.action = jsonRegion.getString("product_image"); 

     db.insertBeaconDetails(beacondetailstore); 

public class BeaconDetails { 

     String uuid,name,notification,type,action; 
     int major,minor; 
} 
+0

'VALUES(?,?,?,?,?)'。 – greenapps

+0

向我们展示您的插入sql。我们需要更多的代码。 – vovahost

+0

所以它在INSERT语句中的数据类型不匹配,但是你给了我们一个CREATE TABLE。你认为我们可以提供什么帮助? – SBH

回答