更新時(shí)間:2022-06-01 09:50:43 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1107次
動(dòng)力節(jié)點(diǎn)小編來(lái)告訴大家Java中的sql語(yǔ)句小細(xì)節(jié),看如下一條sql語(yǔ)句
String sql="SELECT * FROM bookBasicInfo,bookTypeInfo
WHERE bookBasicInfo.BelongType=bookTypeInfo.BookTypeID
AND bookBasicInfo.bookName like ? AND" +
"bookBasicInfo.BelongType=?";
ps.setString(1, "%"+bookName+"%");
ps.setInt(2, typeId);
這是一條根據(jù)圖書(shū)名稱(chēng)和圖書(shū)類(lèi)型進(jìn)行查詢(xún)的sql語(yǔ)句,可能咋一看并沒(méi)有什么毛病,如果將
上述sql語(yǔ)句在java環(huán)境中執(zhí)行會(huì)拋出如下異常
java.sql.SQLException: ORA-00933: SQL 命令未正確結(jié)束
這個(gè)問(wèn)題的錯(cuò)誤原因,就是一個(gè)空格的問(wèn)題,由于sql過(guò)長(zhǎng),用+進(jìn)行拼接,但是在用+進(jìn)行拼接的時(shí)候是原樣進(jìn)行拼接,在“+”那處,會(huì)變成
...bookBasicInfo.bookName like ? ANDbookBasicInfo.BelongType=?
這樣的sql在執(zhí)行的過(guò)程中,當(dāng)然會(huì)報(bào)錯(cuò)啦!
解決方式:只需要在最后一個(gè)AND后面或者bookBasicInfo.BelongType前面添加“空格”,問(wèn)題解決了
如果不細(xì)細(xì)的觀察sql語(yǔ)句,這個(gè)錯(cuò)誤是非常難以發(fā)現(xiàn)的。
如果在開(kāi)發(fā)過(guò)程中出現(xiàn)這樣的問(wèn)題,可能需要耗費(fèi)我們很多時(shí)間。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)