jdbc基础

    技术2022-07-10  141

    什么是jdbc

    ​ jdbc(java data base Connection):java数据库连接,是javaEE一个组件,用于执行sql语句的一套javaAPI,而且提供了多种数据库访问,都时由一套Java类和接口组成。 而具体链接哪种数据库 需要数据库厂商提供驱动包(数据库厂商提供的jar包)

    jdbc涉及的接口和类

    DriverManager :驱动管理类,根据不同的数据库驱动包 可以对应的数据连接Connection: 连接对象,负责连接数据并且与数据库进行数据交互Statement:可以进行数据交互,最主要的是jdbc中执行sql语句resultSet: JDBC中查询语句 结果对象

    jdbc使用步骤

    导入驱动包,一般会放在项目的lib目录下面加载驱动类,通过反射。通过driverManager管理驱动类,用来创建连接。通过连接创建Statement对象通过statement对象执行sql语句 执行sql语句的三种方法 execute: 可以执行 增 删 改 查 返回值都是 boolean executeUpdate 适用于增删改 返回值都是int类型 代表是受影响的行数 executeQuery:适用于查询 返回值是 resultset 保存的是每次查询的结果如果是查询 执行sql语句会有结果集返回需要处理结果集关闭资源

    连接的具体步骤

    package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class FirstJdbc {A public static void main(String[] args) throws Exception{ //1.加载驱动类 oracle.jdbc.driver.OracleDriver Class.forName("oracle.jdbc.driver.OracleDriver"); //2.通过DriverManager管理驱动包来创建连接 Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123"); //url统一资源定位符 数据库链接地址 //url 组成 协议: //IP地址: 端口号 /项目资源/项目目标页面 //oracle 的url jdbc:oracle:thin:@localhost:1521:orcl //localhost 本机地址 也可以写1527.0.0.1 也可以写其他人的数据库 //1521: 是oracle数据库默认的端口号 //xe: 简化版 企业版 orcl 都是数据库的实例 //3.通过连接对象 6创建Statement对象 Statement statement = connection.createStatement(); //4.Statement用于执行sql语句 /** * 执行sql语句的三种方法 * execute: 可以执行 增 删 改 查 返回值都是 boolean * executeUpdate 适用于增删改 返回值都是int类型 代表是受影响的行数 * executeQuery:适用于查询 返回值是 resultset 保存的是每次查询的结果 */ ResultSet resultSet = statement.executeQuery("select *from t_score"); //5.如果是查询就会有第五步 需要处理结果集 显示结果 while (resultSet.next()){//判断下一行是否有数据 //resultSet.getInt(); 可以放int 或者 string //int 表示第一列中第几行的值 string表示字段名 Integer sno=resultSet.getInt(1);// 从获取的下一行数据中取第一个值 String cno=resultSet.getString("cno");//从获取的下一行数据中 字段名是cno的值 double degree=resultSet.getInt("degree"); System.out.println("编号:"+sno+" 课程编号:"+cno+" 成绩:"+degree); } //关闭资源 resultSet.close(); statement.close(); connection.close(); //迭代器 // Set<Integer> set =new HashSet(); // Iterator<Integer> iterator = set.iterator(); // while (iterator.hasNext()){ // System.out.println(iterator.next()); // } } } java.util.Date 父类 子类 java.sql.Dte 保存年月日 java.sql.Time保存时分秒 java.sql.Timestamp 保存年月日时分秒

    连接数据库增删查改

    ​ 根据老师编号查询老师信息

    public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123"); System.out.println("请输入要查找的老师的编号:"); Scanner sc=new Scanner(System.in); int ttno=sc.nextInt(); String str="select * from teacher where tno=?"; PreparedStatement statement=conn.prepareStatement(str); //statement.setInt(1,ttno);//第一个参数的下标是1 statement.setObject(1,ttno); ResultSet rs=statement.executeQuery(); while(rs.next()){ int tno=rs.getInt("tno"); //byte[] tid=rs.getBytes("tid"); Date birthdate=rs.getTimestamp("birthdate"); String tname=rs.getString("tname"); System.out.println("编号:"+tno+" 姓名:"+tname+" 入职时间:"+birthdate); } rs.close(); statement.close(); conn.close(); }

    public static void main(String[] args)throws Exception { System.out.println("请输入教师编号:"); int tno=sc.nextInt(); System.out.println("请输入教师姓名:"); String tname=sc.next(); System.out.println("请输入教师性别"); String gender=sc.next(); System.out.println("请输入教师入职时间:(yyyy-MM-dd)"); String birthday=sc.next();//这里要对时间进行处理 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date birthdate=sdf.parse(birthday); Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123"); //?是占位符的意思 String sql="insert into teacher(tno,tname,gender,birthdate) values(?,?,?,?)"; PreparedStatement statement=conn.prepareStatement(sql); statement.setObject(1,tno); statement.setObject(2,tname); statement.setObject(3,gender); long time = birthdate.getTime();//返回的是long 毫秒数 Timestamp timestamp=new Timestamp(time); statement.setObject(4,timestamp);//数据库支支持sql包下的时间类型 要将util 转换成sql int num=statement.executeUpdate(); System.out.println("新增了"+num+"条数据"); statement.close(); conn.close(); }

    public static void main(String[] args) throws Exception{ int tno=9999; String tname="rose"; String gender="女"; String sql="update teacher set tname=?,gender=? where tno=?"; Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123"); PreparedStatement statement=conn.prepareStatement(sql); statement.setObject(1,tname); statement.setObject(2,gender); statement.setObject(3,tno); int i=statement.executeUpdate(); System.out.println(i); statement.close(); conn.close(); }

    public static void main(String[] args)throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123"); String sql="delete from teacher where tno in (?,?)"; PreparedStatement statement=conn.prepareStatement(sql); statement.setObject(1,9999); statement.setObject(2,1099); int i=statement.executeUpdate(); System.out.println(i); statement.close(); conn.close(); }
    Processed: 0.036, SQL: 9