大家好~
有事請教!!
JSP網頁中,測試資料庫是連結成功,但ResultSet 讀取資料又沒資料出來??(正常應該會印出DDDD的字串)
進SQL查詢確實有資料,請教這會是什麼狀況?? (已卡關2天@@...GOOGLE爬文,尚未有解答)
備註:版本是JAVA 1.6 資料庫: MS SQL 2008版本
擷取部分程式如下(前面程式已宣告Connect 和ResultSet)
//==============資料庫(MOCTA資料)===================================
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
out.println("YES");
}
catch(ClassNotFoundException ex1) {
out.println("JDBC Driver 載入失敗");
out.println(ex1.getMessage());
}
String MS_DB_URL = "jdbc:sqlserver://XXX.XXX.XXX.XXX:1433;DatabaseName="+pDataBase;
MS_dbConn = DriverManager.getConnection(MS_DB_URL, MS_USER, MS_pass);
if(!MS_dbConn.isClosed())
{
out.println("Connessione sucess a mysql server. . .");
}
Mst = MS_dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Mrs = Mst.executeQuery("select * from MOCTA"); //取得MOCTA紀錄
while(Mrs.next())
{
out.println("DDDD");
}
資料庫查詢畫面:
網頁呈現畫面:
=============解答===========
自己問的問題,自己答。 (哈~)
超感謝有這麼多"邦友"在短短的時間內回應我,感覺自己沒有孤單面對,恩恩實在覺得很感恩 ^^
和大家說
我後來查到原因是以下框選之處
因為要依據不同的單別,切換不同資料庫,所以原先我是寫變數做切換。
但資料庫有連結成功,資料卻沒有出現??
走無路時,就走另一招,一開始先指定主要資料庫,等真正連結COMMAND資料時,再指定資料庫。
!
結果就可以了!!!
雖然成功了,但我也不知道為何JAVA語法連JDBC有這"眉嘎"。還好,我試出來。
但還是希望有高高手可以解惑,讓我對今天的提問有更多認識和了解,恩恩謝謝你!!
我不會寫Java,
不過你如果要抓資料的話,
至少要指定一下你要抓哪個欄位的資料,
在C#有可能是 reader["TA01"].ToString() 之類的
在Java我猜可能是 Mrs("TA01") 吧???
小魚謝謝你的回應,我找到原因了,寫在問題內容下方,若你也知道這狀況,歡迎你的再次回應!!
這跟Java無關,
純粹是你跟資料庫不熟,
通常我們會連特定的資料庫,
如果你同時要用好幾個資料庫的資料,
就會需要用
SELECT ... FROM [DataBase].[dbo].[Table] ...
的方式讀取(前提是在同一個資料庫系統中)
當然也可以使用
USE [DataBase];
SELECT ... FROM [Table] ...
只是這樣就會切換到另一個資料庫,
如果沒有切回來反而可能會抓不到原本資料庫的資料,
當然如果你習慣用 [DataBase].[dbo].[Table] 的方式,
不管你是連到哪個資料庫都可以,
像我們最近在做比較大的案子,
會有很多個資料庫,
通常都會指定 [DataBase].[dbo].[Table] 的方式,
就不用管我的連線是連到哪個資料庫了.
小魚 感謝你!! 非常詳細說明,真得更懂 資料庫,呵呵~
自刪
你好:
對應的資料庫是 MS SQL 2008版本。
測試抓資料庫的驅動程式,看起來是有成功com.microsoft.sqlserver.jdbc.SQLServerDriver
但資料來是沒跑出來? 還會有什麼狀況??
不瞭解網頁畫面
你這句Leader_Connessione sucess a mysql server是哪來的?
有原始碼嗎?
你好~是我自己寫的測試
內文有喔
String MS_DB_URL = "jdbc:sqlserver://XXX.XXX.XXX.XXX:1433;DatabaseName="+pDataBase;
MS_dbConn = DriverManager.getConnection(MS_DB_URL, MS_USER, MS_pass);
if(!MS_dbConn.isClosed())
{
out.println("Connessione sucess a mysql server. . .");
}
String MS_DB_URL = "jdbc:sqlserver://XXX.XXX.XXX.XXX:1433:DatabaseName="+pDataBase;
改這樣呢
或許改用preparestatment 還有增加指定useUnicode?
以下為範例:
Properties prop = new Properties();
prop.setProperty("user", "root");
prop.setProperty("password", "root");
String sql = "SELECT * FROM data where date between ? and ?";
Connection conn;
conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/earthquake?useUnicode=true&characterEncoding=UTF-8",prop);
PreparedStatement pstmt=conn.prepareStatement(sql);
ResultSet rs = null;
pstmt.setString(1,date);
pstmt.setString(2,todate);
rs = pstmt.executeQuery();
String rsdate=null;
while(rs.next()) {
quakedata data = new quakedata();
rsdate = rs.getString("date").substring(0,19);
data.setNumber(rs.getString("number"));
data.setDate(rsdate);
data.setLon(rs.getFloat("lon"));
data.setLat(rs.getFloat("lat"));
data.setScale(rs.getFloat("scale"));
data.setDepth(rs.getFloat("depth"));
data.setPosition(rs.getString("position"));
list.add(data);
}
rs.close();
pstmt.close();
conn.close();