JDBC的操作数据库
* JDBC:Java DataBase Connective Java连接数据库 * 概念: * 使用Java代码操作数据库 * JDBC其实就是一套操作数据库的规范(接口) * 快速入门: 1.导入驱动jar包 2.注册驱动 3.创建连接对象 Connection 4.定义sql String sql = "insert into stu values('zhangsan',23,'男'); 5.获取执行sql的对象 Statement 6.执行sql 7.处理结果 8.释放资源。 * 详解各个类: * DriverManager:驱动管理类 * 功能: * 注册驱动: * Class.forName("com.mysql.jdbc.Driver"); 在Driver类中有静态代码块,随着类的加载而执行。 static { try { java.sql.DriverManager.registerDriver(new Driver());//注册驱动 } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } * 拓展:mysql5之后的驱动jar包,注册驱动这行代码可以省略 * 获取Connection对象: * Connection conn = DriverManager.getConnection(url,user,password); * url:访问数据库的路径 jdbc: mysql:// 192.168.3.100: 3306 /day04 主协议 子协议 ip地址 端口号 数据库名称 * 细节:如果连接的是本地的数据库,则ip和端口可以省略 jdbc:mysql:///day04 * Connection:数据库连接对象 * 创建执行sql的对象 * createStatement:创建Statement对象 * prepareStatement:创建preparedStatement对象 * 可以防止sql注入,提高执行效率 * prepareCall: 创建preparedCall对象 * 执行存储过程的。 * 管理事务:事务指一件事,这件事一般包含多个步骤,这些步骤要么同时成功,要么同时失败。 * setAutoCommit():开启事务 * commit():提交事务 * rollback():回滚事务 try{ 开启事务setAutoCommit(false): 1.查询 2.-我卡里的钱 3.+张三卡里的钱 提交事务 commit() }catch(Exception e){ 回滚事务rollback() } * Statement:执行sql的对象 * 方法: * executeUpdate(sql):执行DML语句 (增、删、改) * 返回值:int,代表影响的行数 * executeQuery(sql):执行DQL语句 (查询) * 返回值:ResultSet对象 结果集对象,对结果集的封装 * execute(sql):执行任意语句 * 返回值:boolean,执行成功与否 * ResultSet:结果集对象 * 方法: * next():判断是否有下一条记录,如果有,则将游标向下移动一行 * getXxx(参数):获取数据 * 参数类型: String:列的名称 int:列的序号 从1开始 * PreparedStatement:执行sql的对象 * 登陆: 如果使用statement,可能发生sql注入。 * 功能: * 预防sql注入 * 使用方式: 1.定义sql时,所有的参数位置 需要 使用 ? 作为占位符 2.Connection对象获取执行sql 对象 prepareStatement(sql) 3.给占位符 ? 赋值 * setXxx(参数1,参数2): * 参数1:?出现的位置 从1开始 * 参数2:?对应的值 4.执行sql时,使用不带参数的方法 * 注意:一般都采用该对象来执行sql