如何解决微软自带JDBC的resultset缺陷
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章给大家介绍如何解决微软自带JDBC的resultset缺陷,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。微软自带的3个驱动包分别为:msbase.jar,mssqlser
千家信息网最后更新 2024年11月25日如何解决微软自带JDBC的resultset缺陷
这篇文章给大家介绍如何解决微软自带JDBC的resultset缺陷,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
微软自带的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之类的错误
测试方法和代码如下:
数据库表:TestTable
表字段及类型:
guid char(38)
title varchar(100)
content Text
username varchar(20)
JDBC resultset代码
public static void main(String[] args) { // TODO Auto-generated method stub String url = "jdbc:microsoft:sqlserver://192.168.5.20:1435;DatabaseName=emos2.2"; String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url, "sa", "1234"); if (conn.isClosed() == true) { System.out.println("SomeThing goes wrong "); } PreparedStatement st = conn.prepareStatement("select * from TestTable"); ResultSet rs = st.executeQuery(); while(rs.next()){ System.out.println(rs.getString("guid")); System.out.println(rs.getString("username")); System.out.println(rs.getBinaryStream("content")); } } catch (ClassNotFoundException e) { System.out.println("SomeThing wrong "); System.out.println(e); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { // TODO Auto-generated method stub String url = "jdbc:microsoft:sqlserver://192.168.5.20:1435;DatabaseName=emos2.2"; String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url, "sa", "1234"); if (conn.isClosed() == true) { System.out.println("SomeThing goes wrong "); } PreparedStatement st = conn.prepareStatement("select * from TestTable"); ResultSet rs = st.executeQuery(); while(rs.next()){ System.out.println(rs.getString("guid")); System.out.println(rs.getString("username")); System.out.println(rs.getBinaryStream("content")); } } catch (ClassNotFoundException e) { System.out.println("SomeThing wrong "); System.out.println(e); } catch (SQLException e) { e.printStackTrace(); } } 而第三方的驱动jtds1.2很好的解决了这些bug Java代码 public static void main(String[] args) { String url = "jdbc:jtds:sqlserver://192.168.5.20:1435/emos2.2"; String driver = "net.sourceforge.jtds.jdbc.Driver"; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url, "sa", "1234"); if (conn.isClosed() == true) { System.out.println("SomeThing goes wrong "); } PreparedStatement st = conn.prepareStatement("select * from TestTable"); ResultSet rs = st.executeQuery(); while(rs.next()){ System.out.println(rs.getString("guid")); System.out.println(rs.getString("username")); System.out.println(rs.getBinaryStream("content")); } } catch (ClassNotFoundException e) { System.out.println("SomeThing wrong "); System.out.println(e); } catch (SQLException e) { e.printStackTrace(); } }
关于如何解决微软自带JDBC的resultset缺陷就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
微软
类型
驱动
代码
字段
查询
缺陷
内容
更多
语句
顺序
帮助
不错
兴趣
小伙
小伙伴
数据
数据库
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么取消360网络安全检测
我的世界国服服务器怎么弄材质
参与软件开发的工作经历
医院网络安全保护状况
怎么弄随机数据库
竹溪服务软件开发案例
大学网络安全图片
招聘网络安全博士的中国大学
海量数据关系型数据库的特点是
亚马逊云服务器 ipv6
程序软件开发设置文字透明op
网络安全小卫士怎么投票
我的世界枪战服务器电脑
机房工程机柜及服务器柜设计方案
音创s2服务器配置
高斯数据库日期毫秒转换
服务器 蓝屏
win10服务器版本
高级网络技术考试
互联网科技高清电脑壁纸
软件开发三层结构
全国全省网络安全会议精神
嵌入式软件开发和纯软
i5服务器连接失败
中职计算机网络技术教案下载
安顺回收戴尔服务器
计算机网络技术有用么
兰州中院网络安全
H5用什么编程软件开发
为什么多个服务器崩溃