* 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