1、启动win10虚拟机的Oracle的两个服务。
2、在win10虚拟机,使用pl/sql可以登录并查询成功。
3、在win10虚拟机,执行下面的java程序,确保连接本地oracle数据库成功。
代码:
package com.test;
import oracle.jdbc.OracleDriver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class Demo1 {
public static void main(String[] args) {
//连接oracle,查询数据。
/*jdbc
* java data base connection
*/
try {
//1 加载核心驱动类,只要把该驱动类加载进来,在驱动类的静态块中就做了准备工作。
Class.forName("oracle.jdbc.OracleDriver");
//定义连接字符串 jdbc:oracle:thin:@主机名/IP:端口号:实例名
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//String url="jdbc:oracle:thin:@XTC-02201171408:1521:orcl";
//获得连接对象
Connection conn =
DriverManager.getConnection(url,
"scott","123456");
/*Connection conn只是和oracle起到连接作用,
* 具体的数据库crud操作,还需要相对应的对象实现。
*
*/
/*
* 创建一个PreparedStatement对象,
* 并且将指令告诉该对象。
* */
PreparedStatement pstmt=
conn.prepareStatement("select * from dept");
/*
* 开始执行 PreparedStatement对象,
* 执行过程如下:
* pstmt将命令交给conn,conn将命令传给orcl,
* orcl执行命令,将结果返回给conn,
* conn将结果处理后封装到ResultSet中。
* */
ResultSet rs=pstmt.executeQuery();
/*
* 和Iterator类似,
* ResultSet刚开始指向的是多条数据的最上面,
* 也有方法来判断其下面是否还有数据。
* 如果ResultSet所指向的当前行有数据,
* 那可以调用 getXXX(下标)获得对应列的数据。
*
* */
while (rs.next()){
System.out.println(rs.getString("deptno")+"\t"+rs.getString("dname")+"\t"+rs.getString("loc"));
}
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4、把虚拟机win10的防火墙关闭,并查看ip。然后,用物理机win10 ping虚拟机win10,成功!
cmd窗口输入 control,可以打开控制面板。
5、把上面的java代码拷贝出来,在win10物理机上运行。 运行前,把ip改成虚拟win10。结果,报错!
The Netwokd Adapter could not establish ....
解决办法:
1、把虚拟win10的两个oracle服务给关掉。
2、打开虚拟win10的cmd,输入hostname,ipconfig, 查看主机名和ip地址。
3、打开虚拟win10的hosts文件,把主机名和ip配置进去
C:\Windows\System32\drivers\etc
192.168.204.128 XTC-02201171408
4、修改 oracle的两个ora文件的3处,把localhost改成主机名
(例如:XTC-02201171408)
C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
5、启动oracle的两个服务。
6、修改虚拟win10的java代码,把localhost改成主机名后运行,成功!
7、打开虚拟win10的pl/sql,修改自己对应的2个ora文件的3处,尝试登录,也可以成功。
C:\app\Administrator\product\instantclient_11_2\NETWORK\ADMIN
下面的两个ora,修改3处localhost为主机名。
8、打开物理机win10的hosts文件,把虚拟win10的主机名和虚拟win10的ip映射起来。
9、修改物理机win10的java代码,把主机地址改为虚拟win10的主机名,运行成功!
10、在物理win10安装pl/sql,并打开,发现没有connect as
11、把虚拟win10的 instanceclient_11_2 拷贝出来,粘贴到物理win10的product目录
再次打开pl/sql,此时会出现connect as。
12、修改物理机instance_11_2下面的配置,让pl/sql 连接虚拟win10的oracle。
E:\app\hyw\product\instantclient_11_2\NETWORK\ADMIN
13、再次打开物理机的pl/sql , 输入信息 , 连接虚拟机的oracle,成功!