想請教一下關於在JAVA裡寫SQL查詢語法的問題

Java 課程討論區

版主: XO, 蔡明志, rachel, yuje, benwu

分享到: Facebook

想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章Anderson » 週四 7月 31, 2008 12:37 pm

我用的是SQL server 2005
不曉得為啥我在JAVA中寫SQL查詢語法時只要有用到JOIN就沒辦法成功,而我試了很久都沒法Debug


一開始我用簡單的查詢語法是沒問題的

圖檔
結果
圖檔



但當我用稍微複雜一點的JOIN查詢時就不行了

圖檔
有bug但這個bug我一直找不到解決方式
圖檔
但我在SQL 2005中測試這語法是OK的
圖檔



於是我換了另外一種寫法,一樣在SQL 2005中測試OK,但放在JAVA裡還是有BUG

圖檔
圖檔
圖檔

有沒有人知道為甚麼會這樣阿? 謝謝
附加檔案
sq6.GIF
(12.94 KiB) 尚未被下載
sql7.GIF
(30.57 KiB) 尚未被下載
sql5.GIF
(16.11 KiB) 尚未被下載
sql3.GIF
(14.4 KiB) 尚未被下載
sql1.GIF
(24.27 KiB) 尚未被下載
sql8.GIF
(18.51 KiB) 尚未被下載
sql4.GIF
(17.96 KiB) 尚未被下載
sql2.GIF
(9.75 KiB) 尚未被下載
Anderson
問題很多的小學生
 
文章: 18
註冊時間: 週六 3月 15, 2008 11:09 am
來自: Alibuda

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章benwu » 週四 7月 31, 2008 1:02 pm

我以前遇過類似的問題:
String sql = "SELECT A, B FROM C"+
"WHERE A > 100";

java 把CWHERE變成一個字傳給SQL server
所以一直說SQL錯誤
要改成
String sql = "SELECT A, B FROM C "+
"WHERE A > 100";
我不是大吳老師,也不是小吳老師,我是Ben老師
我的部落格
http://eportfolio.fju.edu.tw/053792
頭像
benwu
資管系教師
 
文章: 645
註冊時間: 週二 4月 20, 2004 4:17 pm
來自: 輔大資管系

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章copyleft » 週四 7月 31, 2008 1:37 pm

SQLException 時把 query string 也印出來,
有助於 debug。

這樣馬上就會知道問題在哪邊了。
頭像
copyleft
E-Office 小組
 
文章: 1006
註冊時間: 週六 8月 07, 2004 11:27 am
來自: Taiwan

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章Anderson » 週四 7月 31, 2008 10:55 pm

謝謝老師與學長給的建議,我成功解決了。
我先是依照學長說得把Query String印出來,發現是老師說得那個情況,要多空一格否則字會連在一起,因此多打個空格就好了。
這個小細節花了我3個小時查不出來,還好我丟問題上來問了,非常謝謝!
Anderson
問題很多的小學生
 
文章: 18
註冊時間: 週六 3月 15, 2008 11:09 am
來自: Alibuda

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章benwu » 週五 8月 01, 2008 9:39 am

應該的 ^^ :D
我不是大吳老師,也不是小吳老師,我是Ben老師
我的部落格
http://eportfolio.fju.edu.tw/053792
頭像
benwu
資管系教師
 
文章: 645
註冊時間: 週二 4月 20, 2004 4:17 pm
來自: 輔大資管系

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章ghost3401 » 週四 8月 07, 2008 9:04 pm

路過看到..
不好意思問一下:

為什麼SQL的查詢語句..
到了JAVA 好像每種指令之間要用 + 號連結@?
EX: select . from . where..
還有是什麼情況才需要多打空格呢?
:roll:
ghost3401
繼續深造的研究生
 
文章: 473
註冊時間: 週四 9月 07, 2006 9:07 am
來自: 基隆偏遠地帶

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章benwu » 週五 8月 08, 2008 7:26 am

因為在java裡是將SQL當成字串
在java裡 (大部份程式語言也是)字串是不能跨行
所以跨行的字串是以+連結
String sql = "SELECT A, B FROM C"+
"WHERE A > 100";

等於

String sql = "SELECT A, B FROM CWHERE A > 100";

java 把CWHERE變成一個字傳給SQL server
所以一直說SQL錯誤
我不是大吳老師,也不是小吳老師,我是Ben老師
我的部落格
http://eportfolio.fju.edu.tw/053792
頭像
benwu
資管系教師
 
文章: 645
註冊時間: 週二 4月 20, 2004 4:17 pm
來自: 輔大資管系

Re:想請教一下關於在JAVA裡寫SQL查詢語法的問題

文章tigertsai » 週六 9月 06, 2008 2:50 pm

這個問題是會讓人很吐血的,我先前在使用WebLogic的JDBC Driver時,使用Preparement Statement時,因為Weblogic本身的Bug,一定要在問號後面多加兩個空白鍵,才不會出錯,簡直快把我搞瘋了。

另外,如果需要在程式中組字串,我建議使用StringBuffer來處理,雖然要多寫幾行程式,但是效率會比較快,直接利用字串相加,在JAVA的處理上會比較慢。

多撈叨一點,目前在業界執行SQL都不建議寫在程式中,都會寫在XML中,方便維護管理,且未來的趨勢一定會整合在ORM的工具中,如果你想找這部份的資料,你可以在網路上找有關IBATIS的資料,他是其中一種OpenSource工具。
tigertsai
剛學走路的小朋友
 
文章: 4
註冊時間: 週一 8月 25, 2008 11:20 pm


回到 java討論區

誰在線上

正在瀏覽這個版面的使用者:Bing [Bot] 和 1 位訪客