sql = "select max(strid) from table1";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);
其中的strid是char(20)类型,后台使用的是oracle数据库,当执行到executeQuery的时候就报出标题给出的错误,但是我在SQLPlus里面执行这个SQL语句就没有问题,为什么?
14 个解决方案
#1
你的语句包含了中文了吗:)??
#2
你把前面的连接数据库的代码都贴出来看看,可能有问题
#3
JDBC驱动不对,比如9的JDBC就不能用8的JDBC
#4
前面的连接代码是:
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
String database = "jdbc:oracle:thin:@" + m_hostname + ":" + m_port + ":" + m_sid;
conn = (OracleConnection)DriverManager.getConnection(database, m_user, m_password);
}catch(Exception e) {
return false;
}
经过验证连接成功。
我的JDBC是8i的,但是打过补丁了,oracle声称可以使用它连接到9i;数据库是9i的,我是通过客户端连接的,客户端是8i的。
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
String database = "jdbc:oracle:thin:@" + m_hostname + ":" + m_port + ":" + m_sid;
conn = (OracleConnection)DriverManager.getConnection(database, m_user, m_password);
}catch(Exception e) {
return false;
}
经过验证连接成功。
我的JDBC是8i的,但是打过补丁了,oracle声称可以使用它连接到9i;数据库是9i的,我是通过客户端连接的,客户端是8i的。
#5
我用8i的jdbc和9i的jdbc都试了,报同样的错误。
#6
sql = "select max(strid) from table1";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);
我有点不明白,executeQuery()中搂主是不是要放第一行定义的sql变量呀?为什么放进selSQL了?哪是什么呀?是这里出错了吧
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);
我有点不明白,executeQuery()中搂主是不是要放第一行定义的sql变量呀?为什么放进selSQL了?哪是什么呀?是这里出错了吧
#7
是我敲错了,变量就是selSQL:
selSQL = "select max(strid) from table1"
selSQL = "select max(strid) from table1"
#8
楼主试一下这一句,应该可以了
selSQL = "select max(strid) from table1 order by strid"
selSQL = "select max(strid) from table1 order by strid"
#9
能不能看看楼主定义conn的代码
#10
Connection conn = null;
#11
拜托呀,明显没有加数据驱动呀,怎么能连接成功?底下的是Oracle的驱动,给个例子:
<%
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@URL:Name","id","password");
Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String SQL= new String();
%>
<%
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@URL:Name","id","password");
Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String SQL= new String();
%>
#12
跟这个没有关系,createStatement的参数都有默认值的,参数是用来设置连接属性的,即使没有也可以正常执行。问题仍然没有解决。
#13
你的驱动程序用的是错误的。我在用JDeveloper3连接oracle9i时出现同样错误。原因就是JDBC8.1.7不能驱动ORACLE9I
#14
这个错误肯定是jdbc版本造成的
你是怎样加的驱动包?估计你没有使用应用服务器带的驱动,而是使用了oracle里的驱动包。
如果可能,尽量使用应用服务器带的驱动程序并配置应用服务器的连接池,例如weblogic自带的9i驱动。
以下都是针对oracle安装目录中的jdbc驱动:
8i的客户端打过补丁可以正常连接到9i服务器端,但是程序在调用该8i的jdbc访问9i就会出错。
9i的客户端可以正常连接8i服务器端,程序调用9i的jdbc也可以正常访问8i数据库。
你是怎样加的驱动包?估计你没有使用应用服务器带的驱动,而是使用了oracle里的驱动包。
如果可能,尽量使用应用服务器带的驱动程序并配置应用服务器的连接池,例如weblogic自带的9i驱动。
以下都是针对oracle安装目录中的jdbc驱动:
8i的客户端打过补丁可以正常连接到9i服务器端,但是程序在调用该8i的jdbc访问9i就会出错。
9i的客户端可以正常连接8i服务器端,程序调用9i的jdbc也可以正常访问8i数据库。
#1
你的语句包含了中文了吗:)??
#2
你把前面的连接数据库的代码都贴出来看看,可能有问题
#3
JDBC驱动不对,比如9的JDBC就不能用8的JDBC
#4
前面的连接代码是:
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
String database = "jdbc:oracle:thin:@" + m_hostname + ":" + m_port + ":" + m_sid;
conn = (OracleConnection)DriverManager.getConnection(database, m_user, m_password);
}catch(Exception e) {
return false;
}
经过验证连接成功。
我的JDBC是8i的,但是打过补丁了,oracle声称可以使用它连接到9i;数据库是9i的,我是通过客户端连接的,客户端是8i的。
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
String database = "jdbc:oracle:thin:@" + m_hostname + ":" + m_port + ":" + m_sid;
conn = (OracleConnection)DriverManager.getConnection(database, m_user, m_password);
}catch(Exception e) {
return false;
}
经过验证连接成功。
我的JDBC是8i的,但是打过补丁了,oracle声称可以使用它连接到9i;数据库是9i的,我是通过客户端连接的,客户端是8i的。
#5
我用8i的jdbc和9i的jdbc都试了,报同样的错误。
#6
sql = "select max(strid) from table1";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);
我有点不明白,executeQuery()中搂主是不是要放第一行定义的sql变量呀?为什么放进selSQL了?哪是什么呀?是这里出错了吧
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(selSQL);
我有点不明白,executeQuery()中搂主是不是要放第一行定义的sql变量呀?为什么放进selSQL了?哪是什么呀?是这里出错了吧
#7
是我敲错了,变量就是selSQL:
selSQL = "select max(strid) from table1"
selSQL = "select max(strid) from table1"
#8
楼主试一下这一句,应该可以了
selSQL = "select max(strid) from table1 order by strid"
selSQL = "select max(strid) from table1 order by strid"
#9
能不能看看楼主定义conn的代码
#10
Connection conn = null;
#11
拜托呀,明显没有加数据驱动呀,怎么能连接成功?底下的是Oracle的驱动,给个例子:
<%
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@URL:Name","id","password");
Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String SQL= new String();
%>
<%
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@URL:Name","id","password");
Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String SQL= new String();
%>
#12
跟这个没有关系,createStatement的参数都有默认值的,参数是用来设置连接属性的,即使没有也可以正常执行。问题仍然没有解决。
#13
你的驱动程序用的是错误的。我在用JDeveloper3连接oracle9i时出现同样错误。原因就是JDBC8.1.7不能驱动ORACLE9I
#14
这个错误肯定是jdbc版本造成的
你是怎样加的驱动包?估计你没有使用应用服务器带的驱动,而是使用了oracle里的驱动包。
如果可能,尽量使用应用服务器带的驱动程序并配置应用服务器的连接池,例如weblogic自带的9i驱动。
以下都是针对oracle安装目录中的jdbc驱动:
8i的客户端打过补丁可以正常连接到9i服务器端,但是程序在调用该8i的jdbc访问9i就会出错。
9i的客户端可以正常连接8i服务器端,程序调用9i的jdbc也可以正常访问8i数据库。
你是怎样加的驱动包?估计你没有使用应用服务器带的驱动,而是使用了oracle里的驱动包。
如果可能,尽量使用应用服务器带的驱动程序并配置应用服务器的连接池,例如weblogic自带的9i驱动。
以下都是针对oracle安装目录中的jdbc驱动:
8i的客户端打过补丁可以正常连接到9i服务器端,但是程序在调用该8i的jdbc访问9i就会出错。
9i的客户端可以正常连接8i服务器端,程序调用9i的jdbc也可以正常访问8i数据库。