偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談如何解決微軟自帶JDBC的resultset缺陷

開發(fā) 后端
本文將談談如何解決微軟自帶JDBC resultset缺陷,希望本文能給大家更多的啟發(fā)與幫助,同時一定要記得關閉RS,釋放資源。

微軟自帶的3個驅動包分別為:msbase.jar,mssqlserver.jar,msutil.jar

微軟JDBC resultset驅動的缺點:

(1)如果采用jdbc-odbc驅動,那么就必須按照查詢順序來一次讀?。ú徽撚袥]有image或text類型)

(2)如果采用微軟提供的ms sql server jdbc driver,如果查詢語句中,不存在image或text類型字段,那么可以按照無序獲取

(3)如果采用微軟提供的ms sql server jdbc driver,如果查詢語句中,存在image或text類型字段,那么就必須按照順序讀取,否則就會報告Driver]ResultSet can not re-read row data for column之類的錯誤

測試方法和代碼如下:

數(shù)據(jù)庫表:TestTable

表字段及類型:

guid char(38)

title varchar(100) 

content Text

username varchar(20)

JDBC resultset代碼

  1. public static void main(String[] args) {     
  2.         // TODO Auto-generated method stub     
  3.         String url = "jdbc:microsoft:sqlserver://192.168.5.20:1435;DatabaseName=emos2.2";     
  4.         String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";     
  5.         try {     
  6.             Class.forName(driver);     
  7.             Connection conn = DriverManager.getConnection(url, "sa", "1234");     
  8.             if (conn.isClosed() == true) {     
  9.                 System.out.println("SomeThing   goes   wrong ");     
  10.             }     
  11.             PreparedStatement st = conn.prepareStatement("select * from TestTable");     
  12.             ResultSet rs = st.executeQuery();     
  13.             while(rs.next()){     
  14.                 System.out.println(rs.getString("guid"));     
  15.                 System.out.println(rs.getString("username"));     
  16.                 System.out.println(rs.getBinaryStream("content"));     
  17.                      
  18.             }     
  19.         } catch (ClassNotFoundException e) {     
  20.             System.out.println("SomeThing     wrong ");     
  21.             System.out.println(e);     
  22.         } catch (SQLException e) {     
  23.             e.printStackTrace();     
  24.         }     
  25.     }    
  26.  
  27. public static void main(String[] args) {  
  28.   // TODO Auto-generated method stub  
  29.   String url = "jdbc:microsoft:sqlserver://192.168.5.20:1435;DatabaseName=emos2.2";  
  30.   String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";  
  31.   try {  
  32.    Class.forName(driver);  
  33.    Connection conn = DriverManager.getConnection(url, "sa", "1234");  
  34.    if (conn.isClosed() == true) {  
  35.     System.out.println("SomeThing   goes   wrong ");  
  36.    }  
  37.    PreparedStatement st = conn.prepareStatement("select * from TestTable");  
  38.    ResultSet rs = st.executeQuery();  
  39.    while(rs.next()){  
  40.     System.out.println(rs.getString("guid"));  
  41.     System.out.println(rs.getString("username"));  
  42.     System.out.println(rs.getBinaryStream("content"));  
  43.       
  44.    }  
  45.   } catch (ClassNotFoundException e) {  
  46.    System.out.println("SomeThing     wrong ");  
  47.    System.out.println(e);  
  48.   } catch (SQLException e) {  
  49.    e.printStackTrace();  
  50.   }  
  51.  }  
  52.  
  53.    而第三方的驅動jtds1.2很好的解決了這些bug   
  54. Java代碼   
  55. public static void main(String[] args) {     
  56.         String url = "jdbc:jtds:sqlserver://192.168.5.20:1435/emos2.2";     
  57.         String driver = "net.sourceforge.jtds.jdbc.Driver";     
  58.         try {     
  59.             Class.forName(driver);     
  60.             Connection conn = DriverManager.getConnection(url, "sa", "1234");     
  61.             if (conn.isClosed() == true) {     
  62.                 System.out.println("SomeThing   goes   wrong ");     
  63.             }     
  64.             PreparedStatement st = conn.prepareStatement("select * from TestTable");     
  65.             ResultSet rs = st.executeQuery();     
  66.             while(rs.next()){     
  67.                 System.out.println(rs.getString("guid"));     
  68.                 System.out.println(rs.getString("username"));     
  69.                 System.out.println(rs.getBinaryStream("content"));     
  70.                      
  71.             }     
  72.         } catch (ClassNotFoundException e) {     
  73.             System.out.println("SomeThing     wrong ");     
  74.             System.out.println(e);     
  75.         } catch (SQLException e) {     
  76.             e.printStackTrace();     
  77.         }     
  78.     }   

【編輯推薦】

  1. 使用JDBC的五個精華功能
  2. Tomcat5+MySQL JDBC連接池配置
  3. 在Weblogic中實現(xiàn)JDBC的功能
  4. 詳解JDBC與Hibernate區(qū)別
  5. JDBC連接MySQL數(shù)據(jù)庫關鍵四步
  6. 淺談JDBC的概念理解與學習
責任編輯:彭凡 來源: javaeye
相關推薦

2009-07-22 13:32:24

JDBC SQL

2021-12-06 14:05:57

區(qū)塊鏈算法技術

2023-11-03 08:29:55

自動化測試

2009-07-06 17:50:13

Java JSP

2009-07-06 17:36:06

ResultSetJDBC Connec

2010-11-09 11:07:18

2013-06-14 09:33:22

微軟補丁藍屏

2009-07-15 18:07:47

JDBC代碼

2015-10-14 09:32:36

Amazon谷歌批量遷移

2024-10-15 09:25:08

JDBCMybatis數(shù)據(jù)庫

2011-07-22 14:14:23

java

2009-07-15 15:47:12

JDBC DAO

2009-07-17 17:41:25

JDBC連接SQL S

2009-07-15 17:11:31

JDBC的概念

2009-06-29 17:17:57

Spring

2009-07-15 17:52:23

sqlite jdbc

2009-07-15 15:18:01

JDBC連接SQL S

2009-07-23 13:30:46

JDBC事務

2009-07-22 14:30:53

JDBC連接池

2021-06-28 10:25:47

MySQL語句接口
點贊
收藏

51CTO技術棧公眾號