win10物理机编写Java程序连接Win10虚拟机的Oracle

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,成功!

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值