Mac 在 windows 虚拟机中配置 oracle

mac 没有 oracle,在 windows 虚拟机中配置好,然后连接。

1. 查看虚拟机地址

ipconfig
Mac 在 windows 虚拟机中配置 oracle_第1张图片

2. Intellji 配置数据库

Mac 在 windows 虚拟机中配置 oracle_第2张图片

URL 对应 Java 中代码

Connection conn = DriverManager.getConnection( // 3个参数 url, user, password
    "jdbc:oracle:thin:@192.168.1.102:1521:XE",
    "briup", "briup"
);

3. Intellji 建表查询

Mac 在 windows 虚拟机中配置 oracle_第3张图片
DROP TABLE TBL_ACCOUNT;

CREATE TABLE TBL_ACCOUNT (
  id           NUMERIC(8) PRIMARY KEY,
  name         VARCHAR2(28),
  account_code VARCHAR2(20),
  salary       NUMERIC(20, 2)
);

SELECT * FROM TBL_ACCOUNT;

4. Java 代码连接

JDBCConnection 类

package com.briup.jdbc.bean;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * Created by shuai
 * on 2017/8/17.
 */
public class JDBCConnection {

    public static Connection getConnection() throws Exception {
        // 1.注册驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 2.创建连接 url 数据库的连接实例
        return DriverManager.getConnection(
                "jdbc:oracle:thin:@192.168.1.102:1521:XE",
                "briup", "briup"
        );
    }
}

测试类 主要用到 PreparedStatement

package com.briup.jdbc;

import com.briup.jdbc.bean.Account;
import com.briup.jdbc.bean.JDBCConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 * Created by shuai
 * on 2017/8/17.
 */
public class PreTest {

    // 增: 添加 Account 类对象
    private static void insertAccount(Connection conn, Account account) throws Exception {

        // 用 PreparedStatement 在前面可以不用指定插入对象的值,VALUES (?,?,?,?)
        // 可以在后面用 set 插入对象的值
        PreparedStatement pstmt = conn.prepareStatement("INSERT INTO TBL_ACCOUNT VALUES (?,?,?,?)"); // 这里写sql语句不能要 ;

        // 类的 Getter
        pstmt.setInt(1, account.getId());
        pstmt.setString(2, account.getName()); // 第1个参数是 ? 所在的位置
        pstmt.setString(3, account.getAccountCode());
        pstmt.setDouble(4, account.getSalary());

        pstmt.executeUpdate(); // 输出 int 型
    }

    // 删: 根据 id 删除
    private static void deleteAccountById(Connection conn, int id) throws Exception {

        PreparedStatement pstmt = conn.prepareStatement("DELETE FROM TBL_ACCOUNT WHERE ID = ?");

        pstmt.setInt(1, id);

        pstmt.executeUpdate();
    }

    // 改: 根据账号 name 修改 salary
    private static void updateAccountSalary(Connection conn, String name, double salary) throws Exception {

        PreparedStatement pstmt = conn.prepareStatement("UPDATE TBL_ACCOUNT SET SALARY = ? WHERE NAME = ?");

        pstmt.setDouble(1, salary);
        pstmt.setString(2, name);

        pstmt.executeUpdate();
    }

    // 查: 根据 name 查询
    private static void findAccountByName(Connection conn, String name) throws Exception {

        PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM TBL_ACCOUNT WHERE NAME = ?");

        pstmt.setString(1, name);

        ResultSet res = pstmt.executeQuery(); // 查询结果集

        ArrayList accounts = new ArrayList<>();

        while (res.next()) {
            Account a = new Account(
                    res.getInt("id"),
                    res.getString("name"),
                    res.getString("account_code"),
                    res.getDouble("salary")
            );
            accounts.add(a);
        }

        for (Account a : accounts) {
            System.out.println(a);
        }
    }

    public static void main(String[] args) throws Exception {

        Connection conn = JDBCConnection.getConnection(); // 调用 JDBCConnection 类方法

//        insertAccount(conn, new Account(3, "shuai", "11111111", 30000));

        findAccountByName(conn, "shuai");

//        deleteAccountById(conn, 3);

//        updateAccountSalary(conn, "shuai", 0);

    }
}

你可能感兴趣的:(Mac 在 windows 虚拟机中配置 oracle)