Java Review SectionⅤ JDBC编程

关系型数据库

MySQL、Oracle、DB2、SQL Server

JDBC API

DriverManager类

getConnection(String url,String name,String password)

Connection接口

Statement接口

 数据类型

 数据库访问

使用JDBC访问数据库的步骤:

  • 加载数据库驱动
  • 建立数据连接
  • 创建Statement对象
  • 执行SQL语句
  • 获取结果集

加载数据库驱动

建立数据库连接

关闭连接

 2018.8.28

package Chapter0829;

import java.sql.*;

public class PreparedStatementDemo {

    static String url = "jdbc:oracle:thin:@localhost:1521:Kar98k";
    static String name = "C##Sakura";
    static String password = "011997";

    public static void main(String[] args) {
        Connection connection = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            connection = DriverManager.getConnection(url, name, password);
            String sql = "insert into \"UserDetails\" VALUES (?,?,?,?,?,?,?,?)";
            PreparedStatement preparedStatement=connection.prepareStatement(sql);
            preparedStatement.setInt(1,8);
            preparedStatement.setString(2,"李斯");
            preparedStatement.setString(3,"李斯");
            preparedStatement.setString(4,"M");
            preparedStatement.setString(5,"李斯");
            preparedStatement.setString(6,"李斯");
            preparedStatement.setString(7,"李斯");
            preparedStatement.setString(8,"李斯");
            int i=preparedStatement.executeUpdate();
            preparedStatement.close();
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

}

存储过程

缺点:不能打日志。

CallableStatement接口

执行存储过程

CallableStatement callableStatement=connection.prepareCall("{call addUserDetails(?,?,?,?,?,?,?,?)}");
callableStatement.setInt(1,7);
callableStatement.setString(2,"BOO");
callableStatement.setString(3,"BOO");
callableStatement.setString(4,"O");
callableStatement.setString(5,"BOO");
callableStatement.setString(6,"BOO");
callableStatement.setString(7,"BOO");
callableStatement.setString(8,"BOO");
callableStatement.execute();

事务

线程

主线程、子线程交替执行:

package Chapter0829;

public class ThreadDemo extends Thread {

    public void run() {
        for (int i = 0; i < 2000; i++) {
//            try {
//                Thread.sleep(10);

                System.out.println("*****当前运行子线程。*****");

//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }

        }
    }

    public static void main(String[] args) {

        ThreadDemo threadDemo = new ThreadDemo();
        threadDemo.start();
        for(int i=0;i<2000;i++){
            System.out.println("当前运行主线程。");
        }
    }
}

 运行结果:

2018.8.29 

猜你喜欢

转载自blog.csdn.net/Altr1aPendrag0n/article/details/82147659