[問題] JSP無法存入單引號進SQL

看板java作者 (大黑)時間16年前 (2010/01/03 22:03), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
用JSP寫入包含單引號的字串時, 會發生錯誤,爬文之後也嘗試使用用string.replace("'","''"); 也就是說用兩個單引號取代一個單引號 或是以"/'"進行取代 但仍然無法解決 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''primosomal protein N'')' at line 1 錯誤如上 不知道大家有沒有甚麼解決方法 麻煩各位了 ================== 恩 我使用的是MYSOL 語法為 INSERT INTO ptt(Genome, PID, Synonym, Gene, Location, Strand, Length, Code, COG, Product)VALUES('Acholeplasma laidlawii PG-8A','162447190','ACL_0324','-','333175..335439','+','754','-','COG1198L','primosomal protein N''); ================== 部分程式碼如下 while((lineStr = br.readLine()) != null) { stmt = conDB.createStatement(); String splitdata[]=lineStr.split("\t"); splitdata[8].replaceAll("'", "''"); String updataCode = "INSERT INTO ptt(Genome, PID, Synonym, Gene, Location, Strand, Length, Code, COG, Product)VALUES" + "('"+genomeName+"','"+ splitdata[3]+"','"+ splitdata[5]+"','"+splitdata[4]+"','"+ splitdata[0]+"','" +splitdata[1]+"','"+ splitdata[2]+"','"+splitdata[6]+"','"+ splitdata[7]+"','"+splitdata[8]+"');"; System.out.println(updataCode); stmt.executeUpdate(updataCode); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.101.194

01/03 22:07, , 1F
是哪一家 db 應該要說一下啊 , 雖然我猜是mysql XD
01/03 22:07, 1F

01/03 22:08, , 2F
印一下你實際執行的SQL 上來 , 再來做診斷吧. ' -> ''沒錯
01/03 22:08, 2F

01/03 22:10, , 3F
是否忘了 string.replace 是 return String object
01/03 22:10, 3F

01/03 22:12, , 4F
而不是直接更改 call object 的字串?
01/03 22:12, 4F
※ 編輯: BIGBLACK918 來自: 203.64.101.194 (01/03 22:15) ※ 編輯: BIGBLACK918 來自: 203.64.101.194 (01/03 22:19)

01/03 22:18, , 5F
看來原PO是以為 replace 會把直接改 call object 了
01/03 22:18, 5F

01/03 22:22, , 6F
原 PO: 請去把 String.replace 的 API 好好看一遍...
01/03 22:22, 6F

01/03 22:25, , 7F
哈 已解決了 謝謝你們兩位~
01/03 22:25, 7F
文章代碼(AID): #1BGAEQ7H (java)