JDBC快速入门

JDBC概念和快速入门案例

1、JDBC的概念:

通过Java代码操作数据库(增,删,改,查)

2、快速入门操作步骤:

A.导入jar包

B.注册驱动  
Class.forName("com.mysql.jdbc.Driver");

C.获取驱动
String url = "jdbc:mysql://127.0.0.1:3306/ee";  //ee是数据库的名称
Connection conn = DriverManager.getConnection(url, "root", "123");

D.获取操作对象  
Statement stat = conn.createStatement();

E.操作SQL     
int num = stat.executeUpdate(sql);

F.释放资源
stat.close();
conn.close();

JDBC各个类的详细介绍

1、DriverManager 驱动管理者

注册驱动
注册驱动的代码 Class.forName("com.mysql.jdbc.Driver");

Connection 连接数据库

A.获取执行数据库的对      
    Statement stat = conn.createStatement();
获取预置语句执行数据库对象 
    PrepareStatement ps = conn.prepareStatement(sql语句);
B.管理事务
a.开启事务 
    conn.setAutoCommit(false); //false设置为手动提交事务.true设置为自动提交
b.提交事务 
    conn.commit();
c.回滚事务 
    conn.rollback();

Statement 操作数据库

A.更新操作(DML"对表记录的增删改"和DDL"对表和库的增删改") 
int num = stat.executeUpdate("SQL语句");  //这里的SQL语句是增删改.返回的是影响几行

B.查询操作(DQL"对表记录的查询操作")
ResultSet resu = stat.executeQuery("SQL查询语句"); //这里的SQL语句是查询语句 DQL 

4、ResultSet 查询表结果集

A.判断是否还存在下一条数据
boolean b = resu.next();  //如果存在下一条数据,返回值为true 不存在则返回false

B.获取结果集当中的数据
a.通过查询到的结果集,索引值获取(索引值从1开始)
    int data01 = resu.getInt(1);        //获取到的是查询结果集索引为1的int类型的数据
    String data02 = resu.getString(2);  //获取到的是查询结果集索引为2的String类型的数据
b.通过查询到的结果集,列名称获取
    int data01 = resu.getInt("id");         //获取到的是查询结果集列名是id的int类型的数据
    String data02 = resu.getString("name"); //获取到的是查询结果集列名是name的String类型的数据

5、PrepareStatement 操作数据库

A.获取预置操作
 String sql = "select * from user where username = ? and password = ?";
PreparedStatement ps = Connection.prepareStatement(sql); //通过预置对象,获取连接的操作

B.设置参数
ps.setString(1,"root"); //参数1:第几个问号,参数2:对应预置的值
ps.setString(2,"123");//参数1:第几个问号,参数2:对应预置的值

C.执行SQL语句
ps.executeQuery();

JDBC工具类的写法

//[1]静态代码块,用于加载静态成员变量(4个文件当中的数据)
//[2]静态的工具方法 Connection getConnection()
//[3]释放资源的方法【重载的方法】 传入2个参数,传入3个参数
public class JDBCUtils {

private static String url;
private static String user;
private static String password;
private static String driver;
/**
 * 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
 */
static{
    //读取资源文件,获取值。

    try {
        //1. 创建Properties集合类。
        Properties pro = new Properties();
        //获取src路径下的文件的方式--->ClassLoader 类加载器
        ClassLoader classLoader = JDBCUtils.class.getClassLoader();
        URL res  = classLoader.getResource("jdbc.properties");
        String path = res.getPath();
       //2. 加载文件
       pro.load(new FileReader(path));
        //3. 获取数据,赋值
        url = pro.getProperty("url");
        user = pro.getProperty("user");
        password = pro.getProperty("password");
        driver = pro.getProperty("driver");
        //4. 注册驱动
        Class.forName(driver);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}


/**
 * 获取连接
 * @return 连接对象
 */
public static Connection getConnection() throws SQLException {
    Connection conn = DriverManager.getConnection(url, user, password);
    return conn;
}

/**
 * 释放资源
 * @param stmt
 * @param conn
 */
public static void close(Statement stmt, Connection conn){
    if( stmt != null){
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if( conn != null){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


/**
 * 释放资源
 * @param stmt
 * @param conn
 */
public static void close(ResultSet rs, Statement stmt, Connection conn){
    if( rs != null){
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if( stmt != null){
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    if( conn != null){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

}

猜你喜欢

转载自blog.csdn.net/qq_43113232/article/details/82501208