jdbc连接Mysql数据库详解

  1. jdbc连接mysql数据库过程

    1. 注册驱动(3种注册驱动方式)
      1. DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      2. System.setProperty(“jdbc.drivers”,”com.mysql.jdbc.Driver”);
      3. Class.forName(“com.mysql.jdbc.Driver”);
        注:第三种实现比前二种实现好
    2. 建立连接:
      1. Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名”,”用户名”,”密码”);
    3. 创建语句
      1. Statement st=conn.createStatement();
    4. 执行语句
      1. ResultSet rs=st.executeQuery(sql)
    5. 处理结果
      1. While(rs.next){}
    6. 释放资源
      1. rs.close();
      2. st.close();
      3. conn.close();
  2. 问题

    1. 灵活度不够
      1. 提出来作为变量传入
    2. 由于注册驱动每个程序中只需要创建一次
      1. 所以可以把其封装到一个单例类中或者使用final类并使驱动注册改为静态代码块
    3. 资源释放会出现BUG,出现异常就可能无法释放掉资源。
      1. try{}finally{}包裹
    4. Statement st=conn.createStatement();
      ResultSet rs=st.executeQuery(sql);sql中无法使用?来代替,传递进来的变量,使用变量时还要解决sql注入的问题
      1. 使用PreparedStatement ps=conn.prepareStatement(sql)来代替
  3. 修改后的写法

1.JdbcUtilsSing.java(单例类来获取这个封装类)

2.Base.java

 

关键点:第三步和第四步

无法用?代替的写法:

String sql=”select * from 表名 where id=”+id+””;

Statement st=conn.createStatement();
ResultSet rs=st.executeQuery(sql);

可以用?代替的写法:

String sql=”select * from 表名 where id=?”;

PreparedStatement ps=conn.prepareStatement(sql)
ResultSet rs=st.executeQuery();

ps.set类型(第几个?位置,变量名);

ResultSet rs=st.executeQuery();

 

区别:Statement执行查询调用方法executeQuery(sql)

                                   执行更删改调用方法executeUpdate(sql)

              PreparedStatement执行查询调用方法executeQuery()

                                                 执行更删改调动方法executeUpdate()

 

版权声明:本博客为记录本人自学感悟,内容大多从网上学习与整理所得,若侵权请告知!

https://mp.csdn.net/postedit/80365677

猜你喜欢

转载自blog.csdn.net/qq_39657909/article/details/81417116