如何解决微软自带JDBC的resultset缺陷
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家介绍如何解决微软自带JDBC的resultset缺陷,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。微软自带的3个驱动包分别为:msbase.jar,mssqlser
千家信息网最后更新 2025年01月23日如何解决微软自带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安全错误
数据库的锁怎样保障安全
西蜀道互联网科技有限公司
中国网络技术与应用专业排名
网络安全监管部门在哪
闵行区辅助软件开发代理品牌
ICT大赛网络安全试题
青岛erp软件开发服务
网络安全技术与产业发展
battlebit连接不上服务器
广东创新服务器厂家
数据库中需求分析实例
我的世界服务器怎么建学校
毕设需要购买服务器吗
精力软件开发
服务器404页面设置
如何删除整个数据库
陕西翼博网络技术有限公司
无锡新型刀片服务器定制
重庆渝北蔬菜配送软件开发
全国网络安全技术与应用
c 如何连接数据库
如何唱歌软件开发
两组数据筛选符合数据库
tbc哈霍兰服务器为啥火
电信服务器的生命周期
方舟服务器手游价格表
服务器维护及管理教程
ice服务器管理
浪潮服务器拆解
cas服务器配置
网络安全狗官网