ecplise连接数据库
1.导入jar包
针对于11g的oracle版本,在以下目录中找到对应的jar并导入到项目运行环境中
app\oracle\product\11.2.0\dbhome_1\jdbc\lib下的ojdbc6.jar
app\oracle\product\11.2.0\client_1\oui\jlib\classes12.jar
2.新建一个 jdbc类进行如下操作
package com_it_JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.CountDownLatch;
public class JdbcDemo {
public static void main(String[] args) {
//定义oracle数据库驱动的类
String driverclass = "oracle.jdbc.OracleDriver";
//定义连接oracle的Url
String url = "jdbc:oracle:thin:@192.168.0.1:1521/orcl" ;
//登入用户名
String username = "admin" ;
//密码
String password = "root" ;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String querysql = "select * from person ";
try {
//注册数据库的驱动程序,将类加载到内存中
Class.forName(driverclass);
//获得数据库连接
conn = DriverManager.getConnection(url, username, password);
//创建sql执行对象
stmt=conn.createStatement();
//执行sql语句
rs = stmt.executeQuery(sql);
//调用getMetaData方法,从而获取ResultSetMetaData接口中的方法
//即获取此 ResultSet 对象的列的编号、类型和属性。
//获得当前表的元数据:表名,列明,列的数量
ResultSetMetaData rsm= rs.getMetaData();
//获得列的数量
Integer col = rsm.getColumnCount();
System.out.println("列数:"+col);
ArrayList<String> list=new ArrayList<>();
for (int i=1;i<=col;i++) {
//获得列名
String cs= rsm.getColumnName(i);
list.add(cs);
}
//获得列所对应的数据
while (rs.next()) {
for (String cname : list) {
String val = rs.getString(cname);
System.out.print((cname +":"+val)+" ");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if (rs!=null) {
rs.close();
}
if (stmt!=null) {
stmt.close();
}
if (conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3.myecplise的jdbc配置
如上所示;
区别在于:URL的格式不同
“`
String url = “jdbc:oracle:thin:@localhost:1521:orcl(sid);
“`
4.几种常见的报错:
1. IO 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186647552)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
解决方法:数据库名的问题,在需要连接的数据库中运行如下语句
select INSTANCE_NAME from v$instance;将sid改为运行的结果即可
2.Io 异常: Invalid connection string format, a valid format is: “host:port:sid”
URL的格式问题:myecplise是如下格式:
jdbc:oracle:thin:@localhost:1521:orcl