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

连接oracle数据库及遇到的问题

2011-02-22 13:53 211 查看
今天连接了一下oracle数据库,遇到了几个问题:
1.出现如下的错误
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:254)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:438)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at neu.com.JdbcTest1.main(JdbcTest1.java:23)
在网上找了相关的解答,说OracelServiceORACLE 服务和XXXX home1TNSListener监听要启动起来,我的服务启动起来了,但是监听没有启动起来,症状表现为启动后刷新后就又没启动起来,其实就是没有启动起来。培训老师帮忙了,看了下Oracle下的à配置和移植工具下的àNetManager的监听程序和服务命名里的主机名,发现和我的电脑à属性里的不一样,就是这个问题了。原来我犯二了,把我的电脑à属性里的“计算机描述”当成了主机名,当然不成了,应该是“完整的计算机名称”才是主机名,哈哈,二了一下。这下子那个服务就启动起来了。
2.但是这个问题解决后又遇到一个问题,然后把localhost变成了本机的ip就成了。程序里也就连接上数据库了。
如果不想把localhost改成ip而还要连接上的话,网上说把oracle安装路径下的listner.ora和tnsnames.ora文件中的HOST全部改为:HOST = 127.0.0.1如我的是这个路径:C:/oracle/product/10.2.0/db_1/network/ADMIN就行了,这个我没有试,望大虾路过指教。
对于上面的问题有的还说要关掉防火墙,但是这个我觉的有点欠佳,因此就没有试。
下面是我的代码:
package neu.com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcTest1 {

public static void main(String [] args){

String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@127.0.0.1:1521:oracle";
String user="scott";
String password="tiger";
String sql="select * from emp";
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
Class.forName(driver);
conn =DriverManager.getConnection(url,user,password);
//不自动提交事务
conn.setAutoCommit(false);
st=conn.createStatement();
rs=st.executeQuery(sql);
//执行完毕后一定要手动提交事务
conn.commit();
while(rs.next()){
System.out.println(rs.getBigDecimal("empno")+" "+rs.getString("ename"));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(rs != null)
rs.close();
if(st != null)
st.close();
if(conn != null)
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: