JDBC是什么:
Java database Connectivity(Java语言链接数据库)
本质是什么:
JDBC是SUN公司制定的一套接口(interface)
Java.sql.*;(这个包下有很多的接口)
接口都有调用者和实现者
面向接口调用,面向接口写实现类,这都属于面向接口编程
为什么要面向接口编程
耦合度:降低程序的耦合度,提高程序的拓展力
多态机制就是非常典型的:面向接口编程(不要面向具体编程)
建议:
Animal a = new Cat(); Animal a = new Dog(); public void feed(Animal a){//面向父类型编程 }
不建议:
Dog d = new Dog(); Cat d = new Cat();
思考:
为什么SUN制定一套JDBC接口
每一个数据库的底层实现原理都不一样
Oracle数据库有自己的原理
MySQL数据库也有自己的原理
SQL Server数据库也有自己的原理
......
每一个数据库产品都有自己独特的实现原理
3.JDBC开发前的准备工作:
先去官网下载对应的驱动Jar包,然后将其配置到环境变量classpath当中
classpath=.;路径
以上配置针对文本编辑器开发,使用idea工具的时候,不需要配置以上的环境变量
4.JDBC编程六步
1.注册驱动:(告诉Java程序,即将不要连接的是那个数据库) (原始的写法) Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); /* 1.加载驱动 这个最常用 Class.forName("com.mysql.jdbc.Driver"); 为什么这个最常用: 因为参数是一个字符串,字符串可以写到XXXXX.properties文件中 */ 2.获取连接:(表示JVM的进程和数据库进程之间的通道打开了,这个属于进程之间的,重量级的,使用完之后一定要关闭通道) 3.获取数据库操作对象(专门执行SQL语句的对象) 4.执行SQL语句(DQL,DML...) 5.处理查询结果集(只有当第四部执行select语句的时候,才有这第五步的查询结果集) 6.释放资源(使用完之后一定要关流)
具体代码如下:
//增加
package com.jdbc; import java.sql.*; /* 编程6步
*/ public class dbConn { public static void main(String[] args) throws SQLException { String url = "jdbc:mysql://localhost:3306/test2"; String username = "root"; String password = "root"; Connection conn = null; Statement stmt = null; try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.获取连接 conn = DriverManager.getConnection(url,username,password); // System.out.println(conn);//获取数据库连接com.mysql.jdbc.JDBC4Connection@14bf9759 // conn.close();//关流 //3.获取数据库操作对象(Statement,专门执行SQL语句的) stmt = conn.createStatement(); //4.执行SQL String sql = "insert into user(username,pwd) values ('ljy','ljy')"; //专门执行DML语句(insert,delete,update) //返回值是影响数据库中的记录条数 int count = stmt.executeUpdate(sql); System.out.println(count == 1?"保存成功":"保存失败"); //5.结果处理器 } catch (SQLException e) { e.printStackTrace(); }finally { //6.关流 if (stmt !=null){ stmt.close(); } if (conn != null){ conn.close(); } } } }
//删除
package com.jdbc; import java.sql.*; public class del { public static void main(String[] args) throws SQLException { String url = "jdbc:mysql://localhost:3306/test2"; String username = "root"; String password = "root"; Connection conn = null; Statement stmt = null; try { //1.注册驱动 Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //2.创建连接 conn = DriverManager.getConnection(url,username,password); //3.获取数据库操作对象(Statement,专门执行SQL语句的) stmt = conn.createStatement(); //4.执行SQL String sql = "delete from user where id = 2"; int count = stmt.executeUpdate(sql); System.out.println(count == 1?"删除成功":"删除失败"); //5.结果处理 } catch (SQLException e) { e.printStackTrace(); }finally { //6.关流 if (stmt !=null){ stmt.close(); } if (conn !=null){ conn.close(); } } } }
//更改
package com.demo; import java.sql.*; public class delDBConn { public static void main(String[] args) { //定义四个属性 driver url username password String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test2"; String username = "root"; String password = "root"; //定义三个对象 Connection conn = null;//连库对象 Statement st = null;//Statement,专门执行SQL语句的 ResultSet rs = null;//结果处理集对象 try { //1.加载驱动 Class.forName(driver); //2.连库 conn = DriverManager.getConnection(url, username, password); //3.获取数据库操作对象 st = conn.createStatement(); //4.执行SQL String sql = "delete from user where id = 3"; int count = st.executeUpdate(sql); System.out.println(count == 1 ? "删除成功!" : "删除失败!"); //5.处理结果集 } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { //6.关流 try { if (st != null) { st.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
//查询
package com.demo; import java.sql.*; public class findAllDBConn { public static void main(String[] args) { //定义四个属性 driver url username password String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test2"; String username = "root"; String password = "root"; //定义三个对象 Connection conn = null;//连库对象 Statement st = null;//Statement,专门执行SQL语句的 ResultSet rs = null;//结果处理集对象 try { //1.加载驱动 Class.forName(driver); //2.连库 conn = DriverManager.getConnection(url,username,password); //3.获取连接对象 st = conn.createStatement(); //4.执行SQL String sql = "select * from user"; rs = st.executeQuery(sql); //5.结果处理集 //如果查询多个使用,使用while循环进行所有数据获取 //技巧:如果查询结果最多1条,使用 if(rs.next()) { 查询到了 } else { 没有数据 } while (rs.next()){ String id = rs.getString(1); String user = rs.getString(2); String pwd = rs.getString(3); System.out.println(user+","+pwd+","); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); }finally { //6.关流 try { if (rs !=null) { rs.close(); } if (st !=null) { st.close(); } if (conn !=null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }