Sqllite исключение происходит при вставке данных из JSON для запроса? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь добавить некоторые данные из Json в таблицу sqllite.ниже мой код для загрузки данных из данных JSON. и иметь внешний класс sqllite для выполнения моего запроса.dbclass является объектом класса sqllite и вызывает метод dbclass.setter для выполнения моего запроса

     JSONArray item_uom_list = object.getJSONArray("ItemUOM");
                        if (item_uom_list.length() > 0) {
                            dbClass.setterValues("delete from tbl_item_uom");
                            for (int i = 0; i < item_uom_list.length(); i++) {
                                JSONObject item_uom_object = item_uom_list.getJSONObject(i);
                                String a = item_uom_object.getString("Org_Id");
                                String b = item_uom_object.getString("Item_No");
                                String c = item_uom_object.getString("Code");
                                String d = item_uom_object.getString("Barcode");
                                String e = item_uom_object.getString("UOMDescription");
                                String f = item_uom_object.getString("UOMQty");
                                String g = item_uom_object.getString("AutoPrice");

                                /*String sql="insert into tbl_item_uom values('?','?','?','?','?','?','?')";
                                dbClass.setterValues(sql,new String[] {a,b,c,d,e,f,g});*/


                                dbClass.setterValues("insert into tbl_item_uom values('" + a + "','" + b + "','" + c + "','" + d + "','" + e + "','" + f + "','" + g + "')");
                            }
                        }

И у меня есть внешний класс sqllite, мой logcat ниже

                          09-20 14:43:17.670 19871-19871/com.krishna.glowis E/SQLiteLog: (1) near "s": syntax error 09-20 14:43:17.674 19871-19871/com.krishna.glowis D/AndroidRuntime: Shutting down VM 09-20 14:43:17.677 19871-19871/com.krishna.glowis E/AndroidRuntime: FATAL EXCEPTION: main Process: com.krishna.glowis, PID: 19871  android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling: insert into tbl_items values('293','PR111','DIAPER-BE SURE-M 5's','','','','GST@12%','','','1','I','1','','1.0','1.0','10.0','1','411000','131000','449300','511100','442000','N','','1','1','null','Item','2018-08-01 04:33:44.95','N','N') at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:898)at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:509)
    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:1704)
    atandroid.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1635)
    at Support_Classes.DBClass.setterValues(DBClass.java:332)
    at Fragments.Synch_Data$3.onResponse(Synch_Data.java:462)
    at Fragments.Synch_Data$3.onResponse(Synch_Data.java:302)
    at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
    at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
    at android.os.Handler.handleCallback(Handler.java:815)
    at android.os.Handler.dispatchMessage(Handler.java:104)

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

android.database.sqlite.SQLiteException: возле "s": синтаксическая ошибка (код 1):

A SQLite exception that indicates there was an error with SQL parsing or execution. 

Вы можете попробовать с ContentValues.

DEMO

SQLiteDatabase database = this.getWritableDatabase();
for (int i = 0; i < item_uom_list.length(); i++) 
{
    JSONObject item_uom_object = item_uom_list.getJSONObject(i);
    String a = item_uom_object.getString("Org_Id");
    String b = item_uom_object.getString("Item_No");
    String c = item_uom_object.getString("Code");
    String d = item_uom_object.getString("Barcode");
    String e = item_uom_object.getString("UOMDescription");
    String f = item_uom_object.getString("UOMQty");
    String g = item_uom_object.getString("AutoPrice");


        ContentValues values = new ContentValues();
        values.put("Org_Id", a); 
        values.put("Item_No", b); 
        .......................
        ......................
        values.put("AutoPrice", g); 
        database.insert("tbl_item_uom", null, values);
}

database.close();
0 голосов
/ 20 сентября 2018

Пожалуйста, посмотрите на ваш журнал, самая первая строка сообщает вам о вашей проблеме.Когда вы пытаетесь выполнить запрос со значением:

..., 'DIAPER-BE SURE-M 5's', ...

, вы разбиваете строку апострофом.используйте две апострофы для строк там, где они вам нужны.

..., 'DIAPER-BE SURE-M 5''s', ...

Не двойной (") знак апострофа, только два сингла (')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...