Java-JDBC使用教程

Java+MYSQL

Posted by     "刘晓疆" on Friday, March 11, 2022

导包

先导入Java与MySQL连接的包我的是(mysql-connector-java-5.0.8.jar),导入后如果是放在lib文件夹下需要build path一下

lib包

在lib文件夹下新建文件jdbc.properties

driverClass=com.mysql.jdbc.Driver //5.0版本与6.0版本的语法不同,切不可混用
url=jdbc:mysql://localhost:3306/library?characterEncoding=UTF-8
username=root
password=?

这一步可以直接写入Util文件内。

Util 包

建立Util包,新建一个JDBC类

public class JDBCUtil {

    static final String DRIVERCLASS;
    static final String URL;
    static final String USERNAME;
    static final String PASSWORD;

    static {
        ResourceBundle bundle = ResourceBundle.getBundle("lib.jdbc");//引入jdbc文件内容:四要素

        DRIVERCLASS = bundle.getString("driverClass");
        URL = bundle.getString("url");
        USERNAME = bundle.getString("username");
        PASSWORD = bundle.getString("password");
    }

    // test 测试引用是否成功
//	public static void main(String[] args) {
//		System.out.println(DRIVERCLASS + "\n" + URL + "\n" + USERNAME + "\n" + PASSWORD);
//	}

    static {
        try {
            Class.forName(DRIVERCLASS);//初始化驱动,捕获类
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }

    /**
     * 释放数据库资源
     * @param conn
     * @param stm
     * @param rs
     */
    public static void closeResource(Connection conn, Statement stm, ResultSet rs) {
        closeResultSet(rs);
        closeStatement(stm);
        closeConnection(conn);
    }

    public static void closeResultSet(ResultSet rs) {
        if(rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void closeStatement(Statement stm) {
        if(stm != null) {
            try {
                stm.close();
                stm = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void closeConnection(Connection conn) {
        if(conn != null) {
            try {
                conn.close();
                conn = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

操作数据库

连接成功后对数据库的操作

try {
            con = JDBCUtil.getConnection();//连接数据库
            String a_name = admin.getName();
            String a_psd = admin.getPassword();
            String sql = "Select * from admin where a_name= ? And a_psd = ? ";//定义选择语句
            ps = con.prepareStatement(sql); //调用prepareStatement方法执行语句
            ps.setString(1, a_name);        //给占位符赋值
            ps.setString(2, a_psd);

            rs = ps.executeQuery(); //执行 与excuteUpdate()功能相同但返回值不同
            while (rs.next()) {
                admin1 = new Admin(a_name, a_psd);
                admin1.setId(rs.getInt("a_id"));
                admin1.setTel(rs.getInt("a_tel"));

            }

处理和显示结果

执行查询语句,并把结果返回给集合 ResultSet

 ResultSet rs = ps.executeQuery();

利用While(rs.next){}将结果遍历出来 格式:a.setid(rs.getInt(“a_id”))“a_id”也可以用列号代替

Statement和PreparedStatement

异同及优缺点 同:两者都是用来执SQL语句的

异:PreparedStatement需要根据SQL语句来创建,它能够通过设置参数,指定相应的值,不是像Statement那样使用字符串拼接的方式

PreparedStatement的优点:

1、其使用参数设置,可读性好,不易记错。在statement中使用字符串拼接,可读性和维护性比较差

2、其具有预编译机制,性能比statement更快

3、其能够有效防止SQL注入攻击

execute和executeUpdate

相同点:二者都能够执行增加、删除、修改等操作

不同点: 1、execute可以执行查询语句,然后通过getResult把结果取出来。executeUpdate不能执行查询语句

2、execute返回Boolean类型,true表示执行的是查询语句,false表示执行的insert、delete、update等。executeUpdate的返回值是int,表示有多少条数据受到了影响

「真诚赞赏,手留余香」

Xiaojiang Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付