当前位置: 技术问答>java相关
有关ORACLE的JDBC连接的问题?
来源: 互联网 发布时间:2015-08-30
本文导语: connecter = DriverManager.getConnection( "jdbc:oracle:oci:@OMC245", "omc","omc"); 我用上面语句连接服务字串为OMC245的ORACLE数据库服务器,但总是连不上,异常提示错误为: Sub Protocol must be speci...
connecter = DriverManager.getConnection(
"jdbc:oracle:oci:@OMC245", "omc","omc");
我用上面语句连接服务字串为OMC245的ORACLE数据库服务器,但总是连不上,异常提示错误为:
Sub Protocol must be specified in connection URL
而用SQLPLUS是可以连上的。
"jdbc:oracle:oci:@OMC245", "omc","omc");
我用上面语句连接服务字串为OMC245的ORACLE数据库服务器,但总是连不上,异常提示错误为:
Sub Protocol must be specified in connection URL
而用SQLPLUS是可以连上的。
|
给一个完整的oracle连jdbc的代码自己研究去吧。我以前用过的。
package jp.co.nec.JTC;
import java.sql.*;
import java.util.*;
import java.io.*;
public class JTCDBConnectionF implements Serializable{
protected Connection con = null;
public JTCDBConnectionF() { }
public void dbOpen() throws java.lang.Exception{
if (con == null || con.isClosed()) {
String url = "jdbc:oracle:oci8:@apsv";
String user = "scott";
String pass = "tiger";
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
con = DriverManager.getConnection(url,user,pass);
con.setTransactionIsolation( con.TRANSACTION_READ_COMMITTED );
con.setAutoCommit(false);
System.out.println("DB OPEN");
} else {
System.out.println("OPENED DB");
}
}
public JTCerrorF dbClose() {
try {
if (con != null && !con.isClosed()) {
con.rollback();
con.close();
System.out.println("DB CLOSE");
} else {
System.out.println("CLOSED DB");
}
}
catch (SQLException se) {
// return new JTCerrorF(se.getErrorCode(),se);
return new JTCerrorF("PD05",se); //DB CLOSE
}
finally {
con = null;
}
return (JTCerrorF)null;
}
}
package jp.co.nec.JTC;
import java.sql.*;
import java.util.*;
import java.io.*;
public class JTCDBConnectionF implements Serializable{
protected Connection con = null;
public JTCDBConnectionF() { }
public void dbOpen() throws java.lang.Exception{
if (con == null || con.isClosed()) {
String url = "jdbc:oracle:oci8:@apsv";
String user = "scott";
String pass = "tiger";
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
con = DriverManager.getConnection(url,user,pass);
con.setTransactionIsolation( con.TRANSACTION_READ_COMMITTED );
con.setAutoCommit(false);
System.out.println("DB OPEN");
} else {
System.out.println("OPENED DB");
}
}
public JTCerrorF dbClose() {
try {
if (con != null && !con.isClosed()) {
con.rollback();
con.close();
System.out.println("DB CLOSE");
} else {
System.out.println("CLOSED DB");
}
}
catch (SQLException se) {
// return new JTCerrorF(se.getErrorCode(),se);
return new JTCerrorF("PD05",se); //DB CLOSE
}
finally {
con = null;
}
return (JTCerrorF)null;
}
}
|
一楼的不要误导别人了。
现在别人用的是oci8的连接方式,是配置了oracle客户端后的连接方式。
但还是写错了:
应该如下:
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@HostStr", "scott", "tiger");
其中hostStr为主机字符串。
不过楼上介绍的thin连接方式具有更好的适用性,因为不用安装客户端了。
如下是获得连接的一个方式:
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");其中myhost为主机名或ip地址,orcl为数据库实例名。
现在别人用的是oci8的连接方式,是配置了oracle客户端后的连接方式。
但还是写错了:
应该如下:
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@HostStr", "scott", "tiger");
其中hostStr为主机字符串。
不过楼上介绍的thin连接方式具有更好的适用性,因为不用安装客户端了。
如下是获得连接的一个方式:
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");其中myhost为主机名或ip地址,orcl为数据库实例名。
|
呵呵,为什么这么写啊?
@192.168.0.1:1521...
具体参数记不清楚了,看看jdbc的文档就是了
不要忘了,listen要起来
@192.168.0.1:1521...
具体参数记不清楚了,看看jdbc的文档就是了
不要忘了,listen要起来
|
另外,oci8连接方式在处理blob、clob字段时好像更稳定。所以,你应该根据需要来决定使用哪种。