目录
3.1 创建项目并添加MySQL驱动(DataSource实现操作数据库)
1. 什么是JDBC
Java 数据库连接。是种于执 SQL 语句的 Java API,它是 Java 中的数据库连接规范。 使了 JDBC 之后,不管是什么数据库与什么数据库驱动,我们只需要使套标准代码就 可以实现对不同数据库进统操作(添加、修改、删除、查询),它的目的就在于解决不同数据库厂商的数据库存在不一样时,会产生的问题。
2. JDBC 作原理
JDBC 为多种关系数据库提供了统访问式,作为特定商数据库访问 API 的种级抽象,
它主要包含些通的接类。
JDBC 访问数据库层次结构:
JDBC的优点:1. Java语言访问数据库操作完全面向抽象接口编程。
2. 开发数据库应用不用限定在特定数据库厂商的API。
3. 程序的可移植性大大增强。
3. JDBC 使
3.1 创建项目并添加MySQL驱动(DataSource实现操作数据库)
创建Java项目,添加MySQL驱动(注意:不同数据库版本对应不同驱动包)
3.2 使用代码操作数据库
操作数据库MySQL提供两种操作API:
1. DirverManager
2. DataSource(推荐使用)
下面是使用DataSource来实现操作数据库:
1. 获取数据源 (输入MySQL数据库连接的服务器地址、用户名、密码)
2. 获取连接 (建立客户端与服务端的连接)
3. 获取执行器 (连接服务器并切换到数据库)
4. 查询或操作数据库 (输入命令,并得到结果)
5. 关闭连接 (关闭客户端)
3.2.1 获取数据源
// 1. 创建数据源
MysqlDataSource dataSource = new MysqlDataSource();
// 1.1 设置连接的 MySQL 数据库服务器
dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33characterEncoding=utf8&useSSL=true");
// 1.2 设置?户名
dataSource.setUser("root");
// 1.3 设置密码
dataSource.setPassword("********");
3.2.2 获得连接
连接对象是 Connection,注意此步骤操作容易出错,定是 com.mysql.jdbc 包下的 Connection 对象。
// 2.创建连接
Connection connection = (Connection) dataSource.getConnection();
3.2.3 获得执行器
执器是来执 SQL 命令的,执器有三种:
1. Statement (用于执行不带参数的简单语句)
2. PreparedStatement (用于执行带或者不带参数的语句,SQL语句会在数据库系统预编译,执行速度快于Statement)(常用)
3. CallableStatement (用于执行数据库存储过程的调用)
PreparedStatement 优点:
性能比 Statement高,SQL预编译,阻止常见SQL注入攻击,占位符“ ?”下标从1开始,占位符不能用多值,参数化SQL查询。
// 3.获得执?器
String selectSQL = "select * from student where user name = ?";
PreparedStatement statement = connection.prepareStatement(selectSQL);
// 3.1 占位符赋值
statement.setString(1, "王五");
PreparedStatement 有 主要两种重要的法:
1. executeQuery(); 法执后返回单个结果集的,通常于 select 语句。
2.executeUpdate():法返回值是个整数,指示受影响的数,通常于 update、insert、delete 语句。
3.2.4 查询或操作数据库
// 4.获得结果集
ResultSet resultSet = statement.executeQuery();
// 4.1 获得结果并打印
while (resultSet.next()) {
? ?String sn = resultSet.getString("sn");
? ?String username = resultSet.getString("username");
? ?String mail = resultSet.getString("mail");
? ?System.out.println(String.format("SN:%s,UserName:%s,Mail:%s", sn,username, mail));
}
ResultSet 的数据排列,每有多个字段,并且有个记录指针,指针所指的数据
叫做当前数据,我们只能来操作当前的数据。我们如果想要取得某条记录,就要使
ResultSet 的 next() 法 ,如果我们想要得到 ResultSet 的所有记录,就应该使 while 循环。
3.2.5 关闭数据库连接
?// 5. 关闭资源
? ? ? ?resultSet.close();
statement.close();
? ? ? ?connection.close();
总结
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于 java开发 的学习思路及方向。从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。
由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的 点击我的Gitee获取。
还有 高级java全套视频教程 java进阶架构师 视频+资料+代码+面试题!
全方面的java进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。