美文网首页
2019-08-24 Java连接数据库进行操作

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

作者: 枫叶落尽 | 来源:发表于2019-08-24 11:53 被阅读0次

    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连接数据库进行操作

          本文链接:https://www.haomeiwen.com/subject/etifectx.html