您的位置:首页 > 数据库 > Oracle

myeclipse连接最新的oracle12c的方法

2013-11-28 10:31 274 查看
我是oracle新手,昨天装好了oracle,用sql plus测试了下,一切OK,打算就用oracle作为我java开发的常用数据库。今天用myeclipse连接数据库时出现了很多问题,首先是classnotfoundexception,就到网上找了ojdbc14.jar,结果给我来了个ORA-28040: No matching authentication protocol,之后试了网上说的class12.jar,class14.jar都未能解决问题,后面再一片文章里看到原因可能是驱动版本不对,可以在如图所示的MANIFAST.MF文件中查看,因此,加载驱动时就把class12,class14,还有ojdbc14.jar都删了,只留下ojdbc6.jar,结果还真跑成功了,之后想起我之前曾经在E:\Databases\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN目录下sqlnet.ora中添加了SQLNET.ALLOWED_LOGON_VERSION,索性先删了这一属性试试,然后重新启动了oracle数据库,结果没问题,于是乎结果就是ojdbc6.jar文件,这个文件在如图所示的目录中显示的version就是12,其他的都是11或者10,9。至于这个ojdbc就是在E:\Databases\oracle\product\12.1.0\dbhome_1\jdbc\lib目下,而且只能添加这一个driver,如果与class.jar同时添加了话,还会出问题,至此,问题解决。
现附上我在网上搜到的一段测试代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Execute {
/**
* 一个非常标准的连接Oracle数据库的示例代码
*/
public static void main(String [] args) {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try {
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
//			DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:" + "thin:@localhost:1521:oraclekd";// 127.0.0.1是本机地址
String user = "system";// 用户名,系统默认的账户名
String password = "Learning";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
String sql = "select * from users where name=?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setString(1, "刘显安");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
while (result.next())
// 当结果集不为空时
System.out.println("学号:" + result.getInt("id") + "姓名:"
+ result.getString("name"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: