1、概念
Java DataBase Connectivity:java数据库连接技术,简称JDBC.
它是使用java语言编写的一套API.为多种关系型数据库提供了统一接口。
同时,也是一个“低级”接口,在其之上可以使用“高级”接口,更方便的连接 数据库。
2、目的
为了给程序员提供同一种方式连接不同的数据库
(提供一个与任何数据库的java连接界面)
3、原理
JDBC负责提供接口
数据库厂商使用自己数据库的特点来实现接口。
程序员调用接口,实际上底层调用数据库厂商实现的部门实际工作过程
mysql数据库:
(1)加载驱动,建立连接
Class.forName(“com.mysql.jdbc.Driver”);
(2)获取连接
Connection conn = DriverManager.getConnection(url,user,password);
url:jdbc:mysql://localhost:3306/crx655? useUnicode=true&characterEncoding=utf8
user:root
password:root
oracle数据库:
(1)加载驱动,建立连接
Class.forName(“oracle.jdbc.driver.OracleDriver”);
(2)获取连接
Connection conn = DriverManager.getConnection(url,user,password);
url:“jdbc:oracle:thin:@localhost:1521:orcl”;
user:“scott”;
password:“tiger”;
(3)获取Sql语句执行对象
Statement st = conn.createStatement();
(4)执行SQl语句
st.execute(sql); //执行DDL语句
st.executeUpdate(sql); //执行DML语句
st.executeQuery(sql); //执行DQL语句
(5)处理结果集
(6)关闭连接
4、接口与类型
(1)驱动管理类型:DriverManager
常用方法: static Connection getConnection(url,user,password)
作用: 通过地址,数据库用户名,用户密码 获取连接对象
(2)连接接口:Connection
常用方法:Statement createStatement()
作用:获取一个SQL语句编译对象
(3)SQL语句对象接口:
Statement: 用于编译静态SQL语句(编译多次)。
boolean execute(String sql):
执行DDL语句,返回false
执行DML语句,返回false
执行DQL语句,返回true
ResultSet executeQuery(String sql):
用于执行DQL语言
int executeUpdate(String sql):
用于执行DML语言,返回值表示该条sql影响的行数
通过JDBC向数据库中创建一张表User
注:因为在jdbc连接数据库时,需要用到第三方jar包中的类和接口,所以我们要引入第三方jar包
- 1)将mysql驱动包加入到工程中
-
a)在工程src上右键新建一个folder,命名随意(lib)
-
b)将mysql-connector-java-5.1.7-bin.jar文件拷贝到lib文件夹中
-
c)在mysql驱动包上右键选择
-
build-path --> Add to build path
- (在本文最后会附上jar包链接)
- 2)使用该驱动中给我们提供的类和接口完成JDBC对数据库的操作
向User表中插入一条数据
注:向数据库中插入中文时,会出现乱码的问题 - 如何解决?
- 1)让数据库支持中文
- 2)在使用JDBC连接数据库时,url部分要加上字符集的设置
-
Connection conn = DriverManager.getConnection(
-
"jdbc:mysql://localhost:3306/test","",""
-
)
- jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
- @author WIN
通过JDBC向数据库中查找数据
通过JDBC向数据库中删除数据
改sql语句
String sql = “delete from user where uid=1”;
int rows = st.executeUpdate(sql);
综合练习:
编写一个程序,控制台输入用户名密码,如果在数据库中存在则显示登录成功,否则登录失败!
注:Statement这个接口有漏洞,容易被攻击
使用它进行执行sql语句时,sql语句的结构可以被修改
reg:select * from emp where ename=‘smith’
可能被修改成
select * from emp where ename=‘smith’ or ‘a’=‘a’
由原来的where子句中有一个条件变成了两个条件,结构发生变化。
修改上面的控制台输入的内容:
请输入用户名:
aaa
请输入密码:
bbb’ or ‘a’='a
登录成功