jdbc:javadatabase connectivitity一种数据库连接技术
不同的数据库,对应不同的驱动程序
JDBC的编程:
1、根据db,选择对应的驱动程序
2、根据驱动程序,获得数据库连接
3、创建sql编译对象
4、使用编写对象,将sql传递到db中
5、操作结果集
6、关闭连接(tcp、IP协议依靠连接,mysql在进行交互的时候,上层是mysql,底层是tcp/ip)
1、获得连接
- publicclassConnectionUtil{
- /**
- *
- @Title: getConnection
- @Description: 数据库的连接方法
- @param @return
- @param @throws ClassNotFoundException
- @param @throws SQLException 参数
- @return Connection 返回类型
- @throws
- */
- publicstaticConnection getConnection()throwsClassNotFoundException,SQLException{
- //加载驱动
- Class.forName(“com.mysql.jdbc.Driver”);
- //获得连接
- String url =”jdbc:mysql://127.0.0.1:3306/carsys?useUnicode=true&characterEncoding=utf8&useSSL=false”;
- returnDriverManager.getConnection(url,”root”,”123456”);
- }
- }
2、创建编译对象
- Statement st = con.createStatement();
新增,修改,删除都使用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、关闭连接
- con.close();
从结果集中获得数据
(1)、get*(index) 下标从1开始
(2)、get*(字段名称)
- publicstaticvoid getById(){
- Connection con;
- try{
- con =ConnectionUtil.getConnection();
- //编译对象
- Statement st = con.createStatement();
- String sql =”select id,stu_name,age,birthday from t_stu where id = ‘3’”;
- //编译并执行
- ResultSet rs = st.executeQuery(sql);
- //询问结果集
- while(rs.next()){
- Long id = rs.getLong(“id”);
- System.out.println(id);
- String str = rs.getString(“stu_name”);
- System.out.println(str);
- int age = rs.getInt(“age”);
- System.out.println(age);
- Date birthday = rs.getDate(“birthday”);
- System.out.println(birthday);
- }
- //关闭连接
- con.close();
- }catch(ClassNotFoundException|SQLException e){
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
预编译对象的增加修改删除查询
直接编译有缺陷:sql语句无法复用且不能防止用户恶意注入,解决方案就是使用预编译preparedstatement
- publicclassDateUtil{
- publicstaticDate getValue(String str){
- returnDate.valueOf(str);
- }
- }
事务:acid
- begin;
- //执行N多条SQL语句
- commit;//rollback;
继承db的连接
编写db.properties
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://127.0.0.1:3306/carsys?useUnicode=true&characterEncoding=utf8&useSSL=false
- jdbc.username=root
- jdbc.password=123456
propertiesutil的编写
改写connectionutil
- publicclassConnectionUtil{
- /**
- *
- @Title: getConnection
- @Description: 数据库的连接方法
- @param @return
- @param @throws ClassNotFoundException
- @param @throws SQLException 参数
- @return Connection 返回类型
- @throws
- */
- publicstaticConnection getConnection()throwsClassNotFoundException,SQLException{
- //加载驱动
- Class.forName(PropertiesUtil.getValue(“jdbc.driver”));
- //获得连接
- String url =PropertiesUtil.getValue(“jdbc.url”);
- String username =PropertiesUtil.getValue(“jdbc.username”);
- String password =PropertiesUtil.getValue(“jdbc.password”);
- Connection conn =DriverManager.getConnection(url,username,password);
- conn.setAutoCommit(false);//取消自动提交
- return conn;
- }
- }
三层架构:表现层,业务层,持久层(也被称为dao层,全称 data access object)