如何解决微软自带JDBC的resultset缺陷
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章给大家介绍如何解决微软自带JDBC的resultset缺陷,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。微软自带的3个驱动包分别为:msbase.jar,mssqlser
千家信息网最后更新 2025年11月15日如何解决微软自带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安全错误
数据库的锁怎样保障安全
网络安全保障工作情况报告
crm数据库什么意思
orcel数据库除法的运算
web 数据库 安卓的项目
无锡公司软件开发哪家好
高中网络安全教育内容
在原有服务器如何接入系统平台
齐齐哈尔章鱼软件开发公司
济南成人软件开发培训机构
福建计算机网络技术基础期末
腾讯会议服务器连接情况超时
开数据网络技术有限公司官网
软件开发流程gb
甘肃服务器地址查询
广东多功能软件开发价格表格
如何进入数据库文件夹下
sql用命令方式建数据库
山东省步天网络技术有限公司
软件开发增值税即征退税额计算
数据库 行死锁
怎样避免服务器指令信息重复刷新
小米盒子服务器
米思米无法访问服务器端口
绍兴嘻孖菜网络技术有限公司
idcx86服务器出货量
sybase数据库用户
网络安全法 意识形态
数据库中数据的来源是什么
免费数据库建模工具
关于重视网络安全的作文