2017-07-09 32 views
1

我返回多行從mysqlJSON,但只有一排正在接受sqlite,我怎麼可以插入這一切:SQLite中使用內容插入多行值

MainActivity.java:

  ..... 
     if (!error) { 

         // user successfully exist in database 
         JSONObject user = jObj.getJSONObject("user"); 
         String id = user.getString("id"); 
         String sutdentId = user.getString("sutdentId"); 
         String full_name = user.getString("full_name"); 
         String year = user.getString("year"); 
         String school = user.getString("school"); 
         String level = user.getString("level"); 

         // pass id ,fullname ,year ,school and level to 
     sqlite 
         db.addUser(id, sutdentId, full_name, year, school, 
level); 

     ..... 

SqliteHandle.java這是用來容納插入和創建表的方法:

 public void addUser(String id, String sutdentId, String full_name 
    ,String 
     year, String school, String level) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_userId, id); 
    values.put(KEY_Student, sutdentId); 
    values.put(KEY_Names, full_name); 
    values.put(KEY_Year, year); 
    values.put(KEY_School, school); 
    values.put(KEY_Level, level); 
long Id = db.insert(TABLE_USER, null, values); 
     Log.d(TAG, "New user inserted into sqlite: " + Id); 
     if (Id > 0) { 
      Log.d(TAG, "New user inserted into database: " + Id); 
     } 
     else{ 
      Log.d(TAG, "OOps! No data inserted in mysql "); 
     } 
    db.close(); // Closing database connection 
    } 
+0

這是一個有點很難說考慮到代碼格式化全部關閉,但似乎你調用插件功能只有一次 – lelloman

+0

如果你是通過你的多個結果數據集從MySQL循環?在MainActivity.java中 - 我看到的只是一次調用addUser函數。 – QuickNull

+0

@ QuickNull,是一個單一的調用是爲什麼我需要知道我如何循環它的一個原因 –

回答

0

您需要循環你的jsonArray插入所有行。
您可以使用編譯語句使執行速度更快。

的代碼看起來大致是這樣的:

//a field that holds the compiled statement 
private SQLiteStatement insStmt = null; 

//assuming you have "JSONArray users" loaded; 
for (int i = 0 ; i < users.length(); i++) { 
    JSONObject obj = users.getJSONObject(i); 
    String id = obj.getString("id"); 
    String studentId = obj.getString("studentId"); 
    String full_name = obj.getString("full_name"); 
    String year = obj.getString("year"); 
    String school = obj.getString("school"); 
    String level = obj.getString("level"); 
    addUser(id, sutdentId, full_name, year, school, level); 
} 

現在ADDUSER功能看起來像這樣(編譯的語句)。

function addUser(String id, String sutdentId, String full_name 
    ,String year, String school, String level) { 

    if (insStmt == null) { //compile it once 
     String query = "INSERT into "+TABLE_NAME+"(id, studentId, full_name, year, school, level) VALUES (?,?,?,?,?,?)"; 
     insStmt = myDataBase.compileStatement(query); 
    } 

    //bind the arguments 
    insStmt.bindAllArgsAsStrings(String[]{id, studentId, full_name, year, school, level}); 
    //execute 
    insStmt.execute(); 
} 
+0

此數組'String []'顯示錯誤。但關於循環'jsonArray'已經循環,問題是我沒有在後 –

+0

所以它現在它的工作與否? –

+0

還沒有,給我錯誤,因爲我上面說過 –