JDBC(Java DataBase Connectivity,java动态数据库连接技术)是一种用于执行SQL语句的Java API。
API : application Interface 程序的接口 一套几口可以有N套实现类(Mysql Oracle SqlServer)
JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。
JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。
今天我们使用的是mysql的驱动mysql-connector-java-5.1.6
lib:
Driver: 这个数据库厂商提供的驱动类 (数据库的基本信息)
DriverManager :驱动管理类: 用于获取连接 需要传递三个参数
Connection :得到数据库连接对象,才能对数据库进行 增加 删除 修改 查询等等
Statement 给数据库发送sql 的对象
PreparedStatement 也是发送sql 的对象 是Statement 对象的子类
ResultSet 返回的结果集对象
index.html?uname=‘张三’& upwd=‘122333’
注意点:所有的jar包都是导入的sql包
jdbc+表示主协议:也就是使用jdbc来进行连接的
mysql:表示子协议:也就是连接的数据库是mysql数据库
localhost:表示本机的地址
3306 数据库的端口号
student 表示连接的库名
? 后面都表示拼接的参数
characterEncoding=utf-8 设置编码格式
serverTimezone=GMT%2B8 设置时区 相差8个小时
useSSL=false 解决兼容性问题
如果是本地进行连接:jdbc:mysql:///数据库的库名
Statement: 给数据库发送sql 的对象 executeQuery() executeUpdate() 这两个方法来发送sql
ResultSet 就是一个结果集(迭代器)
next 类似于迭代器的hasnext()判断是否有下一个元素 获取值:第一种是更根据 列名来进行获取, rs.getInt(“GradeID”);
执行增加 删除 修改 num 是返回的影响的行数
int num = sta.executeUpdate(sql);
使用传统方式的弊端:
1.需要拼接sql 语句(比较麻烦)
2.对sql语句没有基本的检查,不管sql语法是否正确都抛给数据库处理(效率就会慢)
3.sql语句会被入侵,会被更改
Statement ==> PreparedStatement 功能更加强大 (使用这个)
1.占位符跟你赋值的个数必须是一致(包括其类型)
2.赋值必须在 调用这个方法的前面进行操作executeUpdate()
1.不想修改java 代码来适应任何数据库
==>可以把这个固定的放入到配置文件 Properties :
驱动的包名,url,用户名,密码
作用:局部测试 其实就是写一个方法
对这个方法的要求:
1. 用 public void 进行修饰
2. 没有返回值
3. 没有参数
三个注解 @Test @Before @After