jdbc:javadatabase connectivitity一种数据库连接技术
    不同的数据库,对应不同的驱动程序
    JDBC的编程:
    1、根据db,选择对应的驱动程序
    2、根据驱动程序,获得数据库连接
    3、创建sql编译对象
    4、使用编写对象,将sql传递到db中
    5、操作结果集
    6、关闭连接(tcp、IP协议依靠连接,mysql在进行交互的时候,上层是mysql,底层是tcp/ip)
    1、获得连接

    1. publicclassConnectionUtil{
    2. /**
    3. *
      • @Title: getConnection
      • @Description: 数据库的连接方法
      • @param @return
      • @param @throws ClassNotFoundException
      • @param @throws SQLException 参数
      • @return Connection 返回类型
      • @throws
    4. */
    5. publicstaticConnection getConnection()throwsClassNotFoundException,SQLException{
    6. //加载驱动
    7. Class.forName(“com.mysql.jdbc.Driver”);
    8. //获得连接
    9. String url =”jdbc:mysql://127.0.0.1:3306/carsys?useUnicode=true&characterEncoding=utf8&useSSL=false”;
    10. returnDriverManager.getConnection(url,”root”,”123456”);
    11. }
    12. }

    2、创建编译对象

    1. Statement st = con.createStatement();

    3、编译sql并且执行


    新增,修改,删除都使用executeUpdate()
    查询使用 executeQuery()
    //新增,修改,删除都使用executeUpdate()//返回受影响的行数int rows = st.executeUpdate(sql);System.out.println(rows);
    String sql = “select id,stu_name,age,birthday from t_stu where id = ‘3’”;//编译并执行ResultSet rs = st.executeQuery(sql);
    4、关闭连接

    1. con.close();

    从结果集中获得数据
    (1)、get*(index) 下标从1开始
    (2)、get*(字段名称)

    1. publicstaticvoid getById(){
    2. Connection con;
    3. try{
    4. con =ConnectionUtil.getConnection();
    5. //编译对象
    6. Statement st = con.createStatement();
    7. String sql =”select id,stu_name,age,birthday from t_stu where id = ‘3’”;
    8. //编译并执行
    9. ResultSet rs = st.executeQuery(sql);
    10. //询问结果集
    11. while(rs.next()){
    12. Long id = rs.getLong(“id”);
    13. System.out.println(id);
    14. String str = rs.getString(“stu_name”);
    15. System.out.println(str);
    16. int age = rs.getInt(“age”);
    17. System.out.println(age);
    18. Date birthday = rs.getDate(“birthday”);
    19. System.out.println(birthday);
    20. }
    21. //关闭连接
    22. con.close();
    23. }catch(ClassNotFoundException|SQLException e){
    24. // TODO Auto-generated catch block
    25. e.printStackTrace();
    26. }
    27. }

    预编译对象的增加修改删除查询
    直接编译有缺陷:sql语句无法复用且不能防止用户恶意注入,解决方案就是使用预编译preparedstatement

    1. publicclassDateUtil{
    2. publicstaticDate getValue(String str){
    3. returnDate.valueOf(str);
    4. }
    5. }

    事务:acid

    1. begin;
    2. //执行N多条SQL语句
    3. commit;//rollback;

    继承db的连接
    编写db.properties

    1. jdbc.driver=com.mysql.jdbc.Driver
    2. jdbc.url=jdbc:mysql://127.0.0.1:3306/carsys?useUnicode=true&characterEncoding=utf8&useSSL=false
    3. jdbc.username=root
    4. jdbc.password=123456

    propertiesutil的编写
    改写connectionutil

    1. publicclassConnectionUtil{
    2. /**
    3. *
      • @Title: getConnection
      • @Description: 数据库的连接方法
      • @param @return
      • @param @throws ClassNotFoundException
      • @param @throws SQLException 参数
      • @return Connection 返回类型
      • @throws
    4. */
    5. publicstaticConnection getConnection()throwsClassNotFoundException,SQLException{
    6. //加载驱动
    7. Class.forName(PropertiesUtil.getValue(“jdbc.driver”));
    8. //获得连接
    9. String url =PropertiesUtil.getValue(“jdbc.url”);
    10. String username =PropertiesUtil.getValue(“jdbc.username”);
    11. String password =PropertiesUtil.getValue(“jdbc.password”);
    12. Connection conn =DriverManager.getConnection(url,username,password);
    13. conn.setAutoCommit(false);//取消自动提交
    14. return conn;
    15. }
    16. }

    三层架构:表现层,业务层,持久层(也被称为dao层,全称 data access object)