java.sql.SQLException: 违反协议
发布网友
发布时间:2022-04-20 22:34
我来回答
共2个回答
懂视网
时间:2022-04-30 15:23
最近太忙,太忙,简直就是昏天暗地。。。。
正在小猿我努力工作的时候,一个急速闪烁的头像把我拉回到现实中,现场程序在读取数据时报错:SQLException:违反协议,当时小猿我思维一滞,这是什么鬼。凭借我些许的码农经验,打开搜索引擎一顿搜索,正是众说纷纭,大家各有所言。但总结起来无非是两种论调:
1.驱动程序不匹配
2.数据存在问题(中文问题、字段类型、长度不一而足)
来吧,既然有方向,那就奋斗吧,首先看了一下驱动程序,数据库为Oracle10g(10.2.0.5),看了一下官网推荐的驱动为classes12.jar(jdk1.2or1.3使用) 或classes14.jar(jdk1.4or1.5使用),现场jdk为1.6,鉴于jdk向下兼容,classes1.4.jar应该没有问题,检查classpatch应用程序确实也在用classes14.jar这下放心了,按理说没问题(唉,就是这么的自以为是然后后面吃了不少苦,后话再叙);在以为驱动没有问题的情况下开始了漫长的排查数据和编码的历程。各种追踪日志和编程优化下,依然没有解决问题,崩溃呀。。。。。自信心已经消磨不见了,如何是好如何是好?
突然灵光一闪,尼玛,不会是classes14.jar不是官方提供的最新的吧?带着最后一丝希望,在官网重新下载了最新的classes14.jar,替换重启,简单的两步之后,尼玛,程序正常。苍天有眼,不负有心人啊。。。。
总结:
1.确实是驱动问题导致的,其实那些说是数据问题原因的归到底还是驱动的问题
2.不要盲目相信前人啊,我就是简单的看了一下是不是classes14.jar而没有拿官网最新的jar包来比较,导致自己茫然了很久(因为大部分程序都是从历史走来,许多jar包已经不适应于最新的情况,所以我们现在负责程序的人要做好与时俱进)
问题不容小觑,自己在工作中的方法、习惯和思维问题也不能小觑,时常反思吧
不容小觑的SQLException:违反协议
标签:
热心网友
时间:2022-04-30 12:31
违反协议错误,一般都是JDBC的驱动出错了,你检查一下连接数据库的JDBC驱动是否正确。
Oracle 11G的JDBC驱动并不能用于Oracle 10G Release 2的数据库,因此必须使用Oracle 10G Release2的JDBC驱动,这个驱动可以在Oracle安装目录下找到。在Oracle安装目录下找一个JDBC的目录,其下有一个LIB目录,拷贝其中ojdbc14.jar文件就可以了。
java.sql.SQLException: 违反协议
违反协议错误,一般都是JDBC的驱动出错了,你检查一下连接数据库的JDBC驱动是否正确。Oracle 11G的JDBC驱动并不能用于Oracle 10G Release 2的数据库,因此必须使用Oracle 10G Release2的JDBC驱动,这个驱动可以在Oracle安装目录下找到。在Oracle安装目录下找一个JDBC的目录,其下有一个LIB目录,拷贝其中ojdbc...
java连接oracle出现问题 java.sql.SQLException: 违反协议
package Test;import java.sql.DriverManager;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import java.sql.ResultSet;public class db { Connection conn=null;static Statement st=null;static ResultSet rs=null;static String sql="SELECT * FROM infer ";public...
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC...
换端口的方法是:1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server 组,列出一部分数据库服务器。2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协...
jsp页面中出现的错误
英文java.sql.SQLException 说明sql 出错了 Illegal operation on empty result set.说的是错在哪里了。你可以如楼下所说dibug调试一下,还可以在你程序sql文下面打一个system.out.println(SQL);再把打印出来的SQL放在数据库执行一下如果查询出来的数据是空的。也就是印证了上面的错误。还有一种方法...
帮分析一下 java.sql.SQLException: 源代码 和 报错 情况如下.
先检查是不是密码用户名端口都正确 还不行就,别用localhost,改用127.0.0.1 还不行你就安装sqlserver 2000 sp3 还不行,你看看是不是sqlserver禁止使用你的tcp/ip协议 还不行换个端口别用1433,1433好像有bug 再不行,你就祈祷吧
在插入数据时报错:java.sql.SQLException: ORA-00001: 违反唯一约束条件...
应该把建表语句和插入语句贴出来啊。是不是某列的的约束条件是唯一,你却插入了重复的数据。有一种可能:你主键没有设置自增长,所以两次插入了相同的主键 this.getMaxId(con)这个值,能保证都不重复么?
Caused by: java.sql.SQLException: ORA-28040: 没有匹配的验证协议
解决办法有两种,一种是从网上更新一下jdbc的驱动 第二种 ORACLE_HOME/network/admin/sqlnet.ora 加入如下:SQLNET.ALLOWED_LOGON_VERSION=8
java.sql.SQLException异常
看起来是用getBigDecimal去接收数据库里的Clob类型了。Clob读出来是一个流
sql_server_2000连接数据库失败 Error Establishing Socket
在用MSSQL连接数据库的过程中,经常会遇见“Error establishing socket.”的错误,大概得错误日志信息如下:Sql代码 java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)at com.microsoft....
java jdbc 删除数据库表中一列后不能用SQL语句在更新和查询表中其他数据...
java.sql.SQLException: Failed to access a closed resultSet:此语句翻译为:java.sql.SQLException包抛出异常(内容为):错误的连接了一个已关闭的结果集对象。根据异常类型推断,你在执行删除操作后,resultset 错误关闭。仔细查看下 resultset 处理语句。