JDBC增删改查代码

这篇博客介绍了如何使用Java的JDBC工具类JDBCTools2进行数据库的增删改查操作。首先,博客展示了如何从配置文件`jdbc.properties`中读取数据库连接信息,然后注册驱动并获取Connection对象。接着,博客提到了主方法`main`中的代码,演示了如何执行SQL语句,特别强调了`executeUpdate`用于增删改,`executeQuery`用于查询。博客还提及了使用`ResultSet`处理查询结果,并给出了处理Double类型和String类型数据的例子。
摘要由CSDN通过智能技术生成

工具JDBCTools

package com.rimi.tools;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCTools2 {
private static String url;
private static String user;
private static String password;
private static String dirvername;
// 工具类: 1. 不能直接创建对象, 2. 所有的方法都是静态的
private JDBCTools2(){}
// 静态代码块:只有类第一次加载的时候才会执行
static {
// 将数据先重文件中读取出来
Properties pro = new Properties();
try {
// 第一种方式
//FileInputStream in = new FileInputStream(“src/jdbc.properties”);
// 通过类加载器的方法获取src编译后在系统中的文件
// 固定写法: 注意,这个方法只能获取src根目录的文件
InputStream in = JDBCTools2.class.getClassLoader().getResourceAsStream(“jdbc.properties”);
pro.load(in);
dirvername = pro.getProperty(“dirvername”);
url = pro.getProperty(“url”);
user = pro.getProperty(“user”);
password = pro.getProperty(“password”);
// 注册驱动:告诉系统我使用的是什么数据库
Class.forName(dirvername);
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
// 定义静态的一个返回数据库连接对象的方法
public static Connection getConnection(){
// 读取文件数据?问题?
try {
// 获取数据库连接对象,返回给调用者
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

/**
 * 关闭数据库资源的方法
 * @param conn   连接对象
 * @param st     sql操作对象
 */
public static void closeDB(Connection conn, Statement st){
    try {
        if (st != null){
            st.close();
            System.out.println("关闭资源");
        }
        if (conn != null){
            conn.close();
            System.out.println("关闭资源");
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
/**
 * 关闭数据库资源的方法
 * @param conn   连接对象
 * @param st     sql操作对象
 * @param rs     结果集
 */
public static void closeDB(Connection conn, Statement st, ResultSet rs){
   try {
       if (rs != null){
           rs.close();
           System.out.println("关闭资源");
       }
   }catch (SQLException e){
       e.printStackTrace();
   }
   // 调用重载的两个参数的函数来关闭另外两个对象
    closeDB(conn,st);
}

}

主方法main

package com.rimi;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/*
属性集: 就是一个map接口下的一个实现类
特点: 1. 键和值都是字符串类,不能保存其他类型
2. 是专门用来配合流进行字符文件的读取
*/
public class PropertiesDemo {

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

    Properties pro = new Properties();
    // 读取文件数据
    FileInputStream in = new FileInputStream("user.properties");
    pro.load(in);

    System.out.println(pro);

// demo01();
// demo02();
}

private static void demo01() throws IOException {
    Properties pro = new Properties();
    // 添加数据
    pro.setProperty("xiaom","123456");
    pro.setProperty("小明2","666");
    pro.setProperty("小明3","8888");
    // 创建一个保持数据的流对象
    FileOutputStream out = new FileOutputStream("user.properties");
    // 使用属性集的store方法保存数据到文件中
    pro.store(out,"");
    System.out.println("数据保持成功");
    out.close();
}

}

主方法main

package com.rimi;

import com.rimi.tools.JDBCTools;
import com.rimi.tools.JDBCTools2;

import java.math.BigDecimal;
import java.sql.;
import java.util.Arrays;
import java.util.Scanner;
/

执行sql语句的操作: 增、删、改 都是一个方法: executeUpdate(sql)
查询的方法为: executeQuery(sql);
*/
//取消警报@
@SuppressWarnings(“all”)
public class JDBCDemo01 {
public static void main(String[] args) {
demo06();
}

// 使用2.0版:通过配置文件加载jdbc的配置参数
private static void demo06() {
    Connection conn = JDBCTools2.getConnection();
    System.out.println(conn);
}

// 使用第一种工具类实现
private static void demo05() {
    // 通过工具类直接获取连接对象
    Connection conn = JDBCTools.getConnection();
    Statement st = null;
    try {
        st = conn.createStatement();
        String sql = "insert into user values(null,'xiaoha','123456')";
        int row = st.executeUpdate(sql);
        System.out.println(row);
    } catch (SQLException e) {
        e.printStackTrace();
    }finally {
        // 调用的工具类封装的关闭函数来关闭资源
        JDBCTools.closeDB(conn,st);
    }
}

/**
 * 查询数据
 */
private static void demo04() {
    // 提升变量作用域
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql:///2019gy?useSSL=false";
        conn = DriverManager.getConnection(url, "root", "root");
        st = conn.createStatement();
        // 查询需要使用query方法
        // 返回的是一个结果集对象,需要使用对象自己的方式获取每个字段的内容
        rs = st.executeQuery("select * from student");
        // 获取数据的方法有两种: 1 直接使用字段对应的序号来获取数据(第一个字段对应1,后面依次加一)
        // 2. 直接使用字段名称获取对应的数据
        // 获取数据之前,必须先执行next方法,功能就是判断当前是否有数据
        while (rs.next()) {
            int id = rs.getInt(1);
            String name = rs.getString(2);
            String gender = rs.getString("gender");

// BigDecimal score = rs.getBigDecimal(4);
double score = rs.getDouble(“score”);
String cName = rs.getString(“className”);

            System.out.printf("%d,%s,%s,%f,%s\n",id,name,gender,score,cName);
        }
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }finally {
        try {
            if (rs != null){
                rs.close();
                System.out.println("关闭资源");
            }
            if (st != null){
                st.close();
                System.out.println("关闭资源");
            }
            if (conn != null){
                conn.close();
                System.out.println("关闭资源");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

// 删除数据
private static void demo03() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        /*
            jdbc:mysql://   是连接mysql数据库的固定写法
            localhost:3306/  要连接的数据库服务器   地址:端口 ,当前使用的是本地的服务器,默认可以省略  , / 不能省
            2019gy          是你当前要使用的数据库名称
            ?useSSL=false   固定写法,用来声明当前数据库没有使用安全验证
            优化后可以写成 jdbc:mysql:///数据库名称?useSSL=false    会变化的就剩数据库名称了
         */
        String url = "jdbc:mysql://localhost:3306/2019gy?useSSL=false";
        Connection conn = DriverManager.getConnection(url, "root", "root");
        Statement st = conn.createStatement();
        String sql = "delete from user";
        // 执行sql语句
        int row = st.executeUpdate(sql);
        System.out.println(row);
        // 关闭
        st.close();
        conn.close();
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}

// 插入数据
private static void demo02() {
    // 1. 注册驱动
    try {
        Class.forName("com.mysql.jdbc.Driver");
        // 获取与数据库服务器的连接对象
        String url = "jdbc:mysql:///2019gy?useSSL=false";
        Connection conn = DriverManager.getConnection(url, "root", "root");
        // 创建sql操作对象
        Statement st = conn.createStatement();
        // 添加数据
        int row = st.executeUpdate("insert into user values(null,'xiaoxiao','66666')");
        System.out.println(row);
        st.close();
        conn.close();
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}

// 更新数据的方法
private static void demo01() {
    // 1. 注册驱动(5.1以后可以省略)
    try {
        Class.forName("com.mysql.jdbc.Driver");
        // 2. 获取数据库的连接对象,通过驱动管理类DriverManager
        // String url = "jdbc:mysql://localhost:3306/2019gy?useSSL=false";
        // localhost:3306可以省略不写,但是注意  / 不能少
        String url = "jdbc:mysql:///2019gy?useSSL=false";
        Connection conn = DriverManager.getConnection(url,"root","root");
        System.out.println(conn);
        // 3. 通过连接对象创建sql操作对象
        Statement st = conn.createStatement();
        // 3.1 执行sql语句的操作: 增、删、改  都是一个方法: executeUpdate(sql)
        // 返回值就是受影响的行数
        int row = st.executeUpdate("update student set score=88.8 where id=14");
        // 4. 处理结果
        System.out.println(row);
        // 5. 关闭数据库连接资源
        st.close();
        conn.close();
    } catch (SQLException | ClassNotFoundException e) {
        e.printStackTrace();
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值