【问题标题】:How to store inverted commas in csv files and then copy that data to greendao in android如何在csv文件中存储逗号,然后将该数据复制到android中的greendao
【发布时间】:2016-07-14 14:34:30
【问题描述】:

我将一些数据存储在 csv 文件中。当我在绿色 dao 中复制这些数据时,带有反逗号符号的数据会给出 SQLite 异常

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)

我想要那个符号,所以我不能对文件进行任何更改。 请帮助将这些符号存储在 greendao 中。这是我的一些代码:

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();

【问题讨论】:

    标签: java android csv android-sqlite greendao


    【解决方案1】:

    去掉字符串连接,使用?参数占位符加上传入execSQL()的参数数组。

    或者,使用insert() 方法。

    或者,escape the single quotes, using '' instead of \'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-15
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 2022-01-23
      • 1970-01-01
      • 2014-02-01
      相关资源
      最近更新 更多