API:application programming interface ,提供了一组函数/类/或方法,让用户直接去使用,有时可称为接口。
适配器(adapter):java中称为数据库驱动程序,不同数据库需要不同的驱动程序,java中的数据库驱动程序是一个独立的“jar包”,一堆二进制文件的集合。
package jar1024; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; //JDBC插入数据 public class TestJDBC { public static void main(String[] args) throws SQLException { //1.先创建DataSource对象(DataSource对象生命周期应该是要跟随整个程序) DataSource dataSource = new MysqlDataSource(); //接下来针对datasource进行配置,以便后面能顺利访问数据库 //主要配置三个方面信息,URL,User,Password 需要向下转型 ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("123456"); //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了 //Connection的包是java.sql //如果不正常就会抛出SQLexception异常 //connection生命周期较短,每次请求可创建一个新的connection Connection connection = dataSource.getConnection(); //3.拼装sql语句 ,用到prepare,Statement 对象 int id = 1; String name = "cao"; int classId = 10; //?是占位符,可以把具体的变量的值替换到?位置 String sql = "insert into student values(?,?,?)"; PreparedStatement statement = connection.prepareStatement(sql); //1,2,3相当于?的下标 statement.setInt(1,id); statement.setString(2,name); statement.setInt(3,classId); System.out.println("statement" + statement); //4.拼装好之后,执行SQL //insert delete update 都使用executeUpdate 方法来执行 //select 就使用executeQuery来执行 //返回值表示此次操作修改了多少行 int ret = statement.executeUpdate(); System.out.println("ret" + ret); //5.执行完毕后,关闭释放相关资源 //一定是后创建的先释放,注意顺序 statement.close(); connection.close(); } }
2. JDBC查找
package jar1024; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; //JDBC查找 public class TestJDBCSelect { public static void main(String[] args) throws SQLException { //1.先创建DataSource对象 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("123456"); //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了 Connection connection = dataSource.getConnection(); //3.拼装sql语句 ,用到prepareStatement 对象 String sql = "select * from student"; PreparedStatement statement = connection.prepareStatement(sql); //4.拼装好之后,执行SQL ResultSet resultSet = statement.executeQuery(); //5.遍历结果集,遍历过程类似于使用迭代器遍历集合类 //结果集相当于一张表,每张表有很多行,每一行是一条记录(又包含很多列) //next()一方面判定当前是否存在下一行,另一方面如果存在下一行就获取到这一行 //可以直观地把resultSet对象想象成是一个光标 while(resultSet.next()) { //resultSet的光标指向当前行,就可以把当前行中的列数据获取到 int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int classId = resultSet.getInt("classId"); System.out.println(" id: " + id + " name: " + name + " classId: " + classId); } //6.执行完毕后,关闭释放相关资源 //一定是后创建的先释放,注意顺序 resultSet.close(); statement.close(); connection.close(); } }
3. JDBC删除
package jar1024; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; //JDBC删除 public class TestJDBCDelete { public static void main(String[] args) throws SQLException { Scanner scanner = new Scanner(System.in); System.out.println("请输入要删除的学生姓名: "); String name = scanner.next(); //1.先创建DataSource对象 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("123456"); //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了 Connection connection = dataSource.getConnection(); //3.拼装sql语句 ,用到prepareStatement 对象 String sql = "delete from student where name = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,name); //4.拼装好之后,执行SQL int ret = statement.executeUpdate(); if (ret == 1) { System.out.println("删除成功"); }else{ System.out.println("删除失败"); } //5.关闭并释放资源 statement.close(); connection.close(); } }
4. JDBC修改
package jar1024; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; //JDBC修改 public class TestJDBCUpdate { public static void main(String[] args) throws SQLException { //让用户输入要修改id为n的同学姓名 Scanner scanner = new Scanner(System.in); System.out.println("请输入要修改的学生id: "); int id = scanner.nextInt(); System.out.println("请输入要修改的同学姓名: "); String name = scanner.next(); //1.先创建DataSource对象 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true"); ((MysqlDataSource) dataSource).setUser("root"); ((MysqlDataSource) dataSource).setPassword("123456"); //2.创建Connection对象,和 数据库建立连接,就可以和数据库进行后续的数据传输了 Connection connection = dataSource.getConnection(); //3.拼装sql语句 ,用到prepareStatement 对象 String sql = "update student set name = ? where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,name); statement.setInt(2,id); //4.拼装好之后,执行SQL int ret = statement.executeUpdate(); if (ret == 1) { System.out.println("修改成功"); }else{ System.out.println("修改失败"); } //5.关闭并释放资源 statement.close(); connection.close(); } }