2016-07-14 21 views
0

Ich speichere einige Daten in CSV-Dateien. Wenn ich diese Daten kopiere in grün dao dann geben die Daten mit Hochkomma Symbole SQLite AusnahmeSo speichern Sie Anführungszeichen in CSV-Dateien und kopieren Sie diese Daten dann zu greundao in Android

Caused by: android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling: INSERT INTO CATEGORIES (_id, SNO, SINDHI, HINDI ,ENGLISH, DRAWABLE, AUDIO, CATEGORY) values(188,9,'सस्','सास','Wife\'s or Husband\'s Mother','R.drawable.blank','R.raw.saas','Relatives'); 
                       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:886) 
                       at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:497) 
                       at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                       at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
                       at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
                       at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663) 
                       at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594) 

Ich möchte, dass die Symbole, so kann ich keine Änderungen in der Datei vornehmen. Bitte helfen Sie, diese Symbole in greendao zu speichern. Und hier ist einige meiner Code:

InputStream inputStream = getResources().openRawResource(R.raw.animals); 
      InputStreamReader csvStreamReader = new InputStreamReader(inputStream); 
      BufferedReader buffer = new BufferedReader(csvStreamReader); 
      String tableName = "CATEGORIES"; 
      String columns = "_id, SNO, SINDHI, HINDI ,ENGLISH, DRAWABLE, AUDIO, CATEGORY"; 
      String str1 = "INSERT INTO " + tableName + " (" + columns + ") values("; 
      String str2 = ");"; 

      SQLiteDatabase db; 
      DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "category-db", null); 
      db = helper.getWritableDatabase(); 
      db.beginTransaction(); 
      String line; 
      int count=0; 
      try { 
       while ((line = buffer.readLine()) != null) { 
        StringBuilder sb = new StringBuilder(str1); 
        String[] str = line.split(","); 
        sb.append(count + ","); 
        sb.append(str[0] + ","); 
        sb.append("'" + str[1] + "',"); 
        sb.append("'" + str[2] + "',"); 
        sb.append("'" + str[3] + "',"); 
        sb.append("'" + str[4] + "',"); 
        sb.append("'" + str[5] + "',"); 
        sb.append("'" + str[6] + "'"); 
        sb.append(str2); 
        db.execSQL(sb.toString()); 
        count++; 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      db.setTransactionSuccessful(); 
      db.endTransaction(); 

Antwort

1

Sie sich von der String-Verkettung befreien und verwenden ? Platzhalter für Parameter sowie die Parameter-Array in execSQL() geben.

Oder verwenden Sie die insert() Methode.

Oder, escape the single quotes, using '' instead of \'.

+0

Danke @CommonsWare, Es ist total für mich gearbeitet. –