Blog of CodeJELLOW’S ENGINEERING NOTES
← 返回文章

Java使用JDBC(上)

大家都知道JDBC是面向关系型数据库的,全称Java Database Connectivity。可是Java怎么能使用JDBC呢,小编也很好奇,但事实就是这样,大家有什么想法在留言区评论吧!(狗头保命)????

本文目录 ⌄

    大家都知道JDBC是面向关系型数据库的,全称Java Database Connectivity。可是Java怎么能使用JDBC呢,小编也很好奇,但事实就是这样,大家有什么想法在留言区评论吧!(狗头保命)????

    创建数据库

    首先使用Navicat Premium 15 创建一个表,先存进去一点数据方便一会调用。

    运行两个查询语句

    TEXT
    insert into user_info (id,name) VALUES ('123','陈泽曈')
    insert into user_info (id,name) VALUES ('456','老高')

    可以看到已经添加进来了。

    添加依赖

    添加mysql-connector-java-5.1.44-bin.jar包

    选择添加到lib文件夹下

    可以去 文件–项目结构中选择添加依赖

    也可以右键添加为库

    连接数据库

    使用JDBC应用程序向表中查询数据记录需要以下步骤:

    • 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。
    • 注册JDBC驱动程序:需要初始化驱动程序,以便可以程序中打开数据库的通信通道。
    • 打开连接:需要使用DriverManager.getConnection()方法来创建一个Connection对象,它表示与数据库服务器的物理连接。
    • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句,以在选择的数据库的表中查询数据记录。
    • 提取数据:执行SQL查询后,可以从表中获取记录。
    • 释放资源:关闭Statement和connection

    数据库的查询

    TEXT
    package Test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class Test {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://127.0.0.1:3306/test";
                Connection connection= DriverManager.getConnection(url,"root","1qazxsw2");
                System.out.println("连接成功!");
                Statement search=connection.createStatement();
                String sql="SELECT * FROM user_info";
                ResultSet rs = search.executeQuery(sql);
                while(rs.next()){
                    System.out.println(rs.getString("id"));
                    System.out.println(rs.getString("name"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    注意导入sql包,这里捕获异常直接用通用的Exception,不然要使用两个try/catch捕获异常。一个为forName,一个为getConnection抛出。

    • Statement 用于执行静态SQL语句并返回其生成的结果的对象
    • ResultSet 对象保持一个光标指向其当前的数据行

    输出为:

    数据库的修改

    几个操作语法很相似,就直接给出例子了。

    TEXT
    executeUpdate:执行给定的SQL语句,这可能是INSERT , UPDATE ,或DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。

    删除数据

    先插入一个id=0的数据

    TEXT
     int result = search.executeUpdate("delete from user_info where id=0");
                if(result >0){
                    System.out.println("ok");
                }

    使用这句话删除id为0的数据行

    出现了OK,数据库中也删除成功。

    添加数据

    TEXT
    int result1 = search.executeUpdate("insert into user_info (id,name)values('789','hello')");
                if (result1 > 0) {
                    System.out.println("添加成功");
                }

    执行结果

    更新数据

    这次把数据库连接语句做了封装,写进了一个类。使用时传递语句就好。

    JDBC类

    TEXT
    package Test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    
    public class JDBC {
        boolean UpdateSql(String sql){
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://127.0.0.1:3306/test";
                Connection connection = DriverManager.getConnection(url, "root", "1qazxsw2");
                Statement exe=connection.createStatement();
                int result=exe.executeUpdate(sql);
                return result>0;
            } catch (Exception e) {
                e.printStackTrace();
            }
        return  false;
        }
    }
    

    释放资源

    使用完Statement和connection后,要进行资源的释放,那么问题来了,应该怎样设置释放的逻辑呢。

    如果将close添加到这里,当sql语句出错时,会跳转到catch语句,无法释放。所以要添加到finally里。

    当exe或者connection中为null时,不用关闭,因为本来就没有创建成功,当为null时关闭。注意不能写到一个if中一起关闭,因为有可能statement创建失败,而在一个if中时则无法关闭connection。

    注:查询也可以封装到方法里

    TEXT
    boolean SelectSql(String sql){
            Connection connection=null;
            Statement search=null;
            ResultSet rs = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url = "jdbc:mysql://127.0.0.1:3306/test";
                connection = DriverManager.getConnection(url, "root", "1qazxsw2");
                search=connection.createStatement();
                rs = search.executeQuery(sql);
                while(rs.next()){
                    System.out.println(rs.getString("id"));
                    System.out.println(rs.getString("name"));
                }
            } catch (Exception throwables) {
                throwables.printStackTrace();
                if(rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(search!=null){
                    try {
                        search.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(connection!=null){
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
    

    Java使用JDBC(中)

    通过 RSS 订阅更新 →