1. 监听地址127.0.0.1和本机ip的区别
问题:
oracle安装在本地
String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";
连接报错:The Network Adapter could not establish the connection
String url = "jdbc:oracle:" + "thin:@218.193.154.86:1521:orcl"; //本机ip
连接成功
原因:
数据库中只对本地ip进行了监听,对127.0.0.1并没有监听,可以在cmd中运行lsnrctl status进行查看。
解决:
在oracle的net manager 中的监听程序中添加对127.0.0.1:1521的监听,然后重启监听
2. 监听关闭时操作系统用户权限不够
问题:
重启监听时,在cmd中运行lsnrctl stop,报错:TNS-01190: 用户无权执行所请求的监听程序命令
原因:
操作系统用户的权限不够
解决:
在%oracle_home/bin下找到LSNRCTL.EXE 并以管理员权限运行
然后输入stop 、start命令进行重启
3. ojdbc jar包不用下载,可以在该目录下找到
%oracle_home\jdbc\lib
3. 完整的连接代码
package dal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JDBCConnection {
/**
* 一个非常标准的连接Oracle数据库的示例代码
*/
public void testOracle()
{
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "warteac";// 用户名,系统默认的账户名
String password = "oracle";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
/*String sql = "select * from student 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();
}
}
}
public static void main(String[] args) {
JDBCConnection conn = new JDBCConnection();
conn.testOracle();
}
}