JDBC入门

2018-03-10  本文已影响0人  pianpianboy

JDBC入门

时间:20180310


1.1 简介
使用java程序访问(操作)数据库(发送sql语句),这叫用到了jdbc技术。

1.2 使用jdbc访问数据库的前提
1)先登录数据库:

JDBC出现前的结构 JDBC出现后的结构

使用JDBC链接数据库

·

package gz.itast.a_jdbc;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 使用jdbc技术链接数据库
 * @author mengjie
 *
 */
public class Demo1 {
    //连接数据库的字符串,jdbc协议,类似于浏览器和服务器沟通的协议 (http协议)
    //jdbc协议+数据库协议+ip+port+连接的数据库名称
    private static String url = "jdbc:mysql://localhost:3306/day16"; 
    //用户名
    private static String user = "root";
    //密码
    private static String password = "root";
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        //t1();
        //t2();
        //t3();
        
        //主要流程
        //1.注册驱动程序(只注册一次)
        Class.forName("com.mysql.jdbc.Driver");
        //上述代码主要是为了调用Driver.class中代码(mysql具体实现类)
        //
        // Register ourselves with the DriverManager
        //
        //static {
            //try {
                //java.sql.DriverManager.registerDriver(new Driver());
            //} catch (SQLException E) {
                //throw new RuntimeException("Can't register driver!");
            //}
        //}
        
        //2.使用驱动管理类获取连接
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
    }

    private static void t3() throws ClassNotFoundException {
        /**
         * 反射:获取类的对象
         * 解决了t2中重复注册驱动程序的问题
         * 而且降低依赖程度(t2过度依赖com.mysql.jdbc.Driver() 类)
         */
        Class.forName("com.mysql.jdbc.Driver");//执行Driver类中的静态代码块
    }
    
    /**
     * 使用驱动管理类DriverManager,连接数据库
     * @throws SQLException
     */
    private static void t2() throws SQLException {
        Driver driver = new com.mysql.jdbc.Driver();//mysql //注册了一次驱动
//      Driver driver2 = new com.oracle.jdbc.Driver();
        //1.注册驱动程序
        DriverManager.registerDriver(driver);//有注册了一次驱动,即重复注册了两次驱动
        //DriverManager.registerDriver(driver2);
        
        //2.获取连接数据库
        Connection conn = DriverManager.getConnection(url, user, password);//通过url识别需要连接数据库
        System.out.println(conn);
    }

    /**
     * 1) 直接使用驱动程序连接
     * @throws SQLException
     */
    private static void t1() throws SQLException {
        //1.创建驱动程序的实现类对象
        Driver driver = new com.mysql.jdbc.Driver();//新版本
//      Driver driver = new org.gjt.mm.mysql.Driver();//旧版本
        
        Properties prop = new Properties();
        prop.setProperty("user", user);//用户名
        prop.setProperty("password", password);
        //2.连接数据库
        Connection conn = driver.connect(url, prop);
        System.out.println(conn);
    }
}

1.3 jdbc的api
|- Driver接口: 驱动程序接口。
  |-Connection conn = connect() 用于连接数据库的方法。
|-Connection 接口: 代表和数据库的连接。
  |-Statement createStatement() 创建Statement接口的对象。
  |-PreparedStatement prepareStatement(String sql) 创建PreparedStatement接口的对象。
  |-CallableStatement prepareCall(String sql) 创建CallableStatement接口的对象。

|-Statement接口:用于执行静态SQL语句。
  |- int executeUpdate(String sql)执行DDL和DML语句(更新sql语句)比如INSERT\UPDATE\DELETE(DML),或者不返回任何内容的SQL语句(DDL)。
  |-ResultSet executeQuery(String sql) 执行DQL语句(查询sql语句)

  |-PreparedStatement接口:用于执行预编译的SQL语句
    |-int executeUpdate();执行DDL和DML语句(更新sql语句)
    |-resultSet executeQuery()执行DQL语句(查询sql语句)

        |-CallableStatement接口:用于执行存储过程的SQL语句
          |- ResultSet executeQuery()存储过程只能执行查询sql

|-ResultSet接口:表示数据库结果集
  |-boolean next() 将光标移至下一行
  |-getXXX():获取结果集中的每列的值

上一篇下一篇

猜你喜欢

热点阅读