现在介绍如何通过java来连接刚装上的oracle11g2r数据库。
java用jdbc连数库的方法是不变的。我用的帐户密码是:scott / tiger 。我的测试类要读取emp表的数据。在运行以测试类前,我们要先打开数据库,并且也要打开监听器!
进入目录:/opt/oracle11g/server/bin$,执行命令:
./sqlplus "/as sysdba"
SQL>startup --开启数据库
SQL>exit --退出sqlplus环境,但此时数据库仍在进行
./lsnrctl
LSNRCTL> start --开启监听
LSNRCTL> exit --退出监听环境,但此时监听已在运作
接下来就可以运行我的测试类了。我的测试类如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class OracleTest {
String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String sHint = "";
ResultSet rs = null;
Connection conn = null;
Statement stmt = null;
String user = "scott";
String pwd = "tiger";
// 初始化
public boolean initialize() {
try {
Class.forName(sDBDriver);
sHint = "Initialization sucessfully";
return true;
} catch (ClassNotFoundException e) {
sHint = "Initialization Exception:" + e.getMessage();
return false;
}
}
// 执行查询语句
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(url, user, pwd);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
sHint = "Query Exception:" + ex.getMessage();
ex.printStackTrace();
}
return rs;
}
// 关闭连接、结果集、statemernt,释放资源
public boolean close() {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
return true;
} catch (SQLException ex) {
sHint = "Close Exception:" + ex.getMessage();
return false;
}
}
public static void main(String[] args){
OracleTest test=new OracleTest();
test.initialize();
ResultSet rs = test.executeQuery("select * from emp");
try {
if(rs!=null){
for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
System.out.print(rs.getMetaData().getColumnName(i)+"/t");
}
System.out.println();
}
while(rs.next()){
for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
Object obj = rs.getObject(i);
System.out.print(obj==null?"****/t":obj.toString()+"/t");
}
//System.out.print(rs.getDouble("EMPNO")+" "+rs.getDouble(1));
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
test.close();
}
}
}