Java之JDBC

JDBC(Java Data Base Connectivity,java数据库连接)

创建一个以JDBC连接数据库的程序,包含7个步骤:

  1. 加载JDBC驱动程序
  2. 提供JDBC连接的URL
  3. 创建数据库的连接
  4. 创建一个Statement或PreparedStatement
  5. 执行SQL语句
  6. 处理结果
  7. 关闭JDBC对象

DEMO

JDBCUtil类

package com.lee.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcUtil {

    private static final String DRIVER = "com.mysql.jdbc.Driver";
    /* * 连接URL定义了连接数据库时的协议、子协议、数据源标识。 * 参数useUnicode=true:表示使用Unicode字符集。characterEncoding=utf8:字符编码方式。 */
    private static final String URL = "jdbc:mysql://localhost:3306/test"
                                    + "?useUnicode=true&characterEncoding=utf8";
    //连接数据库的用户和密码
    private static final String USERNAME = "root";
    private static final String PASSWORD = "root";

    /* * 要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, * 该对象就代表一个数据库的连接。 */
    private static Connection con = null;
    static {
        try {
            //加载MySql的驱动类
            Class.forName(DRIVER);
            con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (ClassNotFoundException e) {
            System.err.println("找不到驱动程序类 ,加载驱动失败!"); 
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println("数据库连接失败!");
            e.printStackTrace();
        }
    }

    //执行静态SQL语句的对象。
    public static Statement getStatement() throws Exception {
        return con.createStatement();
    }

    //执行动态SQL语句的对象。
    public static PreparedStatement getPreparedStatement(String sql) throws Exception {
        return con.prepareStatement(sql);
    }
}

Statement使用

package com.lee.dao;

import java.sql.ResultSet;
import java.sql.Statement;

import com.lee.util.JdbcUtil;

public class StatementDemo {

    public static void main(String[] args) {
        String sqlCreate = "CREATE TABLE user(" + 
                            "id int," + 
                            "name varchar(10)" + 
                            ")engine=innodb default charset=utf8";
        String sqlInsert = "INSERT INTO user(id, name) VALUES(1, '李四')";
        String sqlSelect = "SELECT * FROM user";
        try {
            /* * Statement 是 Java 执行数据库操作的一个重要方法, * 用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。 * Statement对象,用于执行不带参数的简单SQL语句。 */
            Statement stmt = JdbcUtil.getStatement();

            //execute()用于执行CREATE语句
            stmt.execute(sqlCreate);

            //executeUpdate()用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句
            stmt.executeUpdate(sqlInsert);

            /* * executeQuery()用于执行SELECT语句 * ResultSet包含符合SQL语句中条件的所有行, * 并且它通过一套get方法提供了对这些行中数据的访问。 */
            ResultSet rs = stmt.executeQuery(sqlSelect);
            while (rs.next()) {
                System.out.println(rs.getInt("id") + " : " + rs.getString("name"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

PreparedStatement使用

package com.lee.dao;

import java.sql.PreparedStatement;

import com.lee.util.JdbcUtil;

public class PreparedStatementDemo {

    public static void main(String[] args) {

        String sql = "INSERT INTO user(id, name) VALUES(?, ?)";;
        try {
            //推荐使用. PreparedStatement可重复使用,提高效率;另外还可防止注入攻击
            PreparedStatement pstmt = JdbcUtil.getPreparedStatement(sql);
            pstmt.setInt(1, 2);//第一个?号的内容 
            pstmt.setString(2, "王五");//第二个?号的内容
            pstmt.executeUpdate(); //执行SQL 语句,更新数据库 

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

你可能感兴趣的:(java,数据库,jdbc)