2019-08-24 Java连接数据库进行操作

Java连接数据库、进行操作的过程主要是:

1、加载驱动

2、获得连接

3、准备语句

4、执行、结果处理

5、收尾处理,比如关闭连接、结果集

demo:

Connection con=null;
        if(con==null)
        {
            System.out.println("test开始连接数据库");
            try { //加载驱动程序
                Class.forName("com.mysql.cj.jdbc.Driver");
            }catch(Exception e){ 
                e.printStackTrace();
                System.out.println("加载MYSQL数据库驱动失败!");
            }
            try{
                String url="jdbc:mysql://localhost:3306/databsename?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
                String user="root";
                String password="password";
                con=DriverManager.getConnection(url,user,password);
                System.out.println("连接到数据库success");

                Statement sql = null;
                ResultSet rs=null;  
                
                sql = con.createStatement();
                String sqlstate = "select start_time from everyday where id='0000'";
                rs = sql.executeQuery(sqlstate); 
                String lastDate = null;
                
                while(rs.next()){   
                    lastDate = rs.getString("start_time");
                }
                rs.close();
                sql.close();
                }
                catch(SQLException e)
                {
                    e.printStackTrace();
                }
        }

加载驱动和获得连接阶段几乎没有差别,有差别的地方主要在准备语句和执行、结果处理阶段。
假设获得的连接对象为conn,在最通用的情况,

 Statement sql = conn.createStatement();
 ResultSet rs=sql.executeQuery("select start_time from everyday where id='0000'");

即可完成与数据库的交互,将我们想获得的数据存贮在rs中,后续进行处理即可。

但是,我们对数据库不仅仅进行查询,同时需要更新,此时就需要更换执行方式了,上面使用的是executeQuery(),如果是单纯的更新,我们使用excuteUpdate()就可以,此时返回值是受影响条数。但执行更新数据时,会遇到SQL注入的问题,此时我们不再使用createStatement()来准备语句,而是使用prepareStatement()来准备语句:

PreparedStatement pr1 = conn.prepareStatement("INSERT INTO everyday (id,start_time) VALUES (?, ?)");    
pr1.setString(1,"0000");pr1.setString(2, today);
pr1.executeUpdate(); 

然后使用setString 等方法来设置参数,以此避免SQL注入,提高性能,理清程序逻辑。

[参考]表名也不确定用PreparedStatement 可以吗? [问题点数:100分]
[参考]Java数据库连接PreparedStatement的使用详解
[参考]PreparedStatement 使用
[参考]executeUpdate()方法的使用
[参考]PreparedStatement
[参考]prepareStatement的用法和解释
[参考]PreparedStatement效率为什么高/为什么要使用PreparedStatement代替Statement
[参考]statement 、prepareStatement的用法和解释
[参考]JDBC中executeQuery、executeUpdate和execute之间的区别
[参考]

你可能感兴趣的:(2019-08-24 Java连接数据库进行操作)