2014-10-20 102 views
-6

我長時間面臨問題。SQLite語法錯誤代碼(1)

我動態生成插入查詢在Android SQLite數據庫它引發以下錯誤。

 android.database.sqlite.SQLiteException: near "(": syntax error (code 1): , while compiling: 
      INSERT INTO 'contacts' (id, name, phone_number, email, fax, job, company, website, address, 
      mobile) VALUES(98,'Vijay Bachani','022 - 61608080','','','TRAVEL CONSULTANT','RIYA TRAVEL &  
     TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''), 
    (99,'Taha Udaipurwala','022 - 61608080','[email protected]','','JR. CONSULTANT','RIYA TRAVEL & TOURS 
    (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''),(100,'Salman Lakdawala','022 - 61608080','[email protected]','','JUNIOR CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001','9768683322'),(101,'Vipul Kharat','022 - 61608080','[email protected]','','JR. CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001','9768215903'),(102,'Abdul Rafiq Siddique','022 - 61608080','[email protected]','','JR. CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001','9820327417'),(103,'Suryaji More','022 - 61608080','','','OFFICE ASSISTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''),(104,'Wayne Joseph','022 - 61608080','','','SR. CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''),(105,'GEORGE THOMAS','022 - 67772300','[email protected]','','GENERAL MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','M/1, Leela Business Park, Andheri Kurla road, Andheri (East), Mumbai - 400059','9820128819'),(106,'K P RAMKUMAR','022 - 67772300','[email protected]','','MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','M/1, Leela Business Park, Andheri Kurla road, Andheri (East), Mumbai - 400059','9619481065'),(107,'SANDESH CHAVAN','022 - 29258611','[email protected]','','ASST. MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','Atlanta Arcade, Ground Floor, Marol Church Road, Opp. The Leela, Andheri (E), Mumbai - 400 059','9619246722'),(108,'SUBRAMANIAN M S','022 - 61608080','[email protected]','','ASST. MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''),(109,'JOVITA R. GONSALVES','022 - 29258611','[email protected]','','TEAM LEADER','RIYA TRAVEL & TOURS (I) 
PVT. LTD.','WWW.RIYA.TRAVEL','Atlanta Arcade, Ground Floor, Marol Church Road, Opp. The Leela, Andheri (E), Mumbai - 400 059','9881847272'),(110,'SALIM JAMADAR','022 - 
67772300','[email protected]','','SR. CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','M/1, Leela Business Park, Andheri Kurla road, Andheri (East), Mumbai - 400059','9820593817'),(111,'ROHAN SURVE','022 - 67772300','[email protected]','','ASST. MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','M/1, Leela Business Park, Andheri Kurla road, Andheri (East), Mumbai - 400059','8898211973'),(112,'NITHIN K','022 - 61608080','[email protected]','','ASST. MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''),(113,'MANOJ TAMBE','022 - 61608080','[email protected]','','SR. OFFICER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001',''),(114,'SUBASH N.L','022 - 29258611','[email protected]','','MANAGER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','Atlanta Arcade, Ground Floor, Marol Church Road, Opp. The Leela, Andheri (E), Mumbai - 400 059','9819517027'),(115,'DAVID M','022 - 29258611','[email protected]','','OFFICER','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','Atlanta Arcade, Grou 

Java代碼:

for (int i=0; i<flag; i++) { 

        JSONObject item = contactsdetails.getJSONObject(k); 
        int id = Integer.parseInt(item.getString("ID")); 
        String name = item.getString("Name"); 
        String phone = item.getString("Telephone"); 
        String email = item.getString("Email"); 
        String fax = item.getString("Fax"); 
        String company = item.getString("Company"); 
        String address = item.getString("Address"); 
        String job= item.getString("Job"); 
        String web = item.getString("Web"); 
        String mobile = item.getString("Mobile"); 

        //sqlString += "INSERT INTO '"+TABLE_CONTACTS+"' ("+KEY_ID+", "+KEY_NAME+", "+KEY_PH_NO+", "+KEY_EMAIL+", "+KEY_FAX+", "+KEY_JOB+", "+KEY_COMPANY+", "+KEY_WEBSITE+", "+KEY_ADDRESS+", "+KEY_MOBILE+") VALUES ("+id+",'"+name+"','"+phone+"','"+email+"','"+fax+"','"+job+"','"+company+"','"+web+"','"+address+"','"+mobile+"');"; 
        sqlString += "("+id+",'"+name+"','"+phone+"','"+email+"','"+fax+"','"+job+"','"+company+"','"+web+"','"+address+"','"+mobile+"'),"; 
        k++; 
       } 

很感激,如果幫助

+0

創建查詢時,您可能忘記在某處添加空格。你可以發佈代碼你在哪裏做這個查詢? – hrskrs 2014-10-20 12:01:26

+0

添加java代碼 – Amy 2014-10-20 12:02:54

+0

可以附加在android數據文件夾中創建的sqlite文件嗎? – 2014-10-20 12:05:23

回答

0

你試圖用一個INSERT插入幾行。這是不能做到的。每行需要一個INSERT

INSERT INTO 'contacts' (id, name, phone_number, email, fax, job, company, website, address, mobile) VALUES (98,'Vijay Bachani','022 - 61608080','','','TRAVEL CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001','') 
INSERT INTO 'contacts' (id, name, phone_number, email, fax, job, company, website, address, mobile) VALUES (99,'Taha Udaipurwala','022 - 61608080','[email protected]','','JR. CONSULTANT','RIYA TRAVEL & TOURS (I) PVT. LTD.','WWW.RIYA.TRAVEL','237 Gulab Building, P.D Mello Road, Mumbai, 400001','') 

等......這些INSERT的每一個也需要一個接一個地執行。

+0

我在第二次循環迭代中出錯。在第一次迭代中,我在一次呼叫中插入了500行 – Amy 2014-10-20 12:05:21

+0

對不起,我認爲你錯了。 SQL INSERT語法不允許這樣做。 – m0skit0 2014-10-20 12:06:37

+2

@ m0skit0:實際上,這確實看起來是有效的語法:http://sqlite.org/lang_insert.html – CommonsWare 2014-10-20 12:07:37

1

擺脫字符串連接。使用?作爲位置佔位符。這不僅可以處理您忽略的撇號和引號,還可以幫助您抵禦SQL注入攻擊。