赞
踩
1、定义:
本质:java数据库连接,是一种用于执行SQL语句的java API,是java中的数据库连接规范。
目的:使用这套规范(JDBC)实现不同数据库之间的统一访问
1、JDBC访问数据库层次结构
2、JDBC优势
(1)java语言访问数据库操作完全面向抽象接口编程;
(2)开发数据库应用不用限定在特定数据库厂商的API;
(3)程序的可移植性大大增强。
1、创建一个java程序,并添加mysql驱动包
2、使用代码来操作数据库
MySQL JDBC提供了两种操作MySQL数据库的方法:
(1)DiverManager
(2)DataSource(推荐使用,更符号OOP编码的思想和代码模式)
DataSource:
①获得数据源DataSource(相当于使用mysql客户端输入密码)
②获得一个连接Connection(输入了正确的密码,并且进入到了mysql操作界面)
③获得一个执行器(使用了某个数据库)
④组装SQL并调用执行的API(相当于在mysql客户端输入了SQL命令,并执行了回车操作)
⑤关闭资源(关闭mysql客户端)
1、获得数据源
2、得到Connection
3、得到执行器PreparedStatement
4、执行SQL
5、关闭资源
Connection接口实现类由数据库提供,获取Connection对象通常有两种方式;
1、通过DriverManager(驱动管理类)的静态方法获取
//1、选择mysql驱动
Class.forName("com.mysql.jdbc.Driver");
//2、得到连接
Connection connection = (Connection) DriverManager.getConnection(url:"jdbc:mysql://127.0.0.1:3306/java33?characterEncoding=utf8&useSSL=true");
//3、拼接sql
PreparedStatement statement = connection.prepareStatement(sql:"select * from city");
2、通过DataSource(数据源)对象获取。实际应用中会使用Database对象。
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33?characterEncoding=utf8&useSSL=true");
dataSource.setUser("root");
dataSource.setPassword("12345678");
//2、得到链接
Connection connection = (Connection) dataSource.getConnection();
//3、得到执行器
String sql = "select * from city where id < ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,5);
区别:
(1)DriverManager类获取的Connection连接,是无法重复利用的,每次使用完以后释放资源时,通过connection.close()都是关闭物理连接;
(2)DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接是可以重复的,每次使用完数据库连接,释放资源调用connection.close()都是将Connection连接对象回收。
Statement对象主要是将SQL语句发送到数据库中,JDBC API中主要提供了三种Statement对象。
1、Statement:用于执行不带参数的简单sql语句;
2、PreparedStatement(最常用):用于执行带或不带参数的sql语句;
3、CallableStatement:用于执行数据库存储过程的调用。
ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套get…方法提供了这些行中数据的访问。
ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
1、查询操作
(1)第一种:
import com.mysql.jdbc.Connection; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class SeCity { public static void main(String[] args) throws SQLException { //1、获得数据源 MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33?characterEncoding=utf8&useSSL=true"); dataSource.setUser("root"); dataSource.setPassword("12345678"); //2、得到链接 Connection connection = (Connection) dataSource.getConnection(); //3、得到执行器 String sql = "select * from city where id < ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1,5); //4、组装并执行sql ResultSet resultSet = statement.executeQuery(); //若结果集的下一行有数据的话,若下一行为null,返回false;若下一行有值,返回true; //每次循环可以得到一行数据 while (resultSet.next()){ City city = new City(); city.setId(resultSet.getInt("id")); city.setName(resultSet.getString("name")); System.out.println(city); } //5、关闭资源 resultSet.close(); statement.close(); connection.close(); } }
(2)第二种
import com.mysql.jdbc.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * DriverManager 进行 JDBC 的查询 */ public class SelCity2 { public static void main(String[] args) throws ClassNotFoundException, SQLException { // 1.选择 mysql 的驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.得到连接 Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java33?user=root&password=12345678&characterEncoding=UTF-8&useSSL=true"); // 3.拼接 SQL,得到执行器 PreparedStatement statement = connection.prepareStatement("select * from city"); // 4.执行 SQL,得到结果 ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { City city = new City(); city.setId(resultSet.getInt("id")); city.setName(resultSet.getString("name")); System.out.println(city); } // 5.关闭资源 resultSet.close(); statement.close(); connection.close(); } }
2、添加操作
import com.my`在这里插入代码片`sql.jdbc.Connection; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.PreparedStatement; import java.sql.SQLException; public class AddCity { public static void main(String[] args) throws SQLException { // 1.获得数据源 DataSource(设置 MySQL 的服务器地址) MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33?characterEncoding=utf8&useSSL=true"); // 1.1 设置 MySQL 的服务器地址 dataSource.setUser("root"); // 1.2 设置连接mysql的用户名 dataSource.setPassword("12345678"); // 1.3 设置mysql的密码 // 2.得到连接 Connection Connection connection = (Connection) dataSource.getConnection(); // 3.得到执行器(组装SQL) String insertSQL = "insert into city(id,name) values(?,?)"; // 组装sql,使用占位符“?” PreparedStatement statement = connection.prepareStatement(insertSQL); // 填充占位符 statement.setInt(1, 5); statement.setString(2, "宝鸡"); // 4.执行 SQL int result = statement.executeUpdate(); // 返回一个受影响的行数【添加、修改、删除】 System.out.println("受影响的行数:" + result); // 5.关闭资源(从小到大) statement.close(); // 关闭执行器 connection.close(); // 关闭连接 } }
3、修改操作
import com.mysql.jdbc.Connection; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.PreparedStatement; import java.sql.SQLException; public class UpCity { public static void main(String[] args) throws SQLException { // 1.得到数据源 DataSource【url、user、password】 MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33?characterEncoding=utf8&useSSL=true"); dataSource.setUser("root"); dataSource.setPassword("12345678"); // 2.得到连接 Connection Connection connection = (Connection) dataSource.getConnection(); // 3.组装 SQL,得到执行器 String updateSql = "update city set name=? where id=?"; PreparedStatement statement = connection.prepareStatement(updateSql); statement.setString(1, "广东"); statement.setInt(2, 4); // 4.执行 SQL,得到执行结果 int result = statement.executeUpdate(); System.out.println("执行结果:" + result); // 5.关闭资源 statement.close(); connection.close(); } }
4、删除操作
import com.mysql.jdbc.Connection; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.PreparedStatement; import java.sql.SQLException; public class DelCity { public static void main(String[] args) throws SQLException { // 1.得到 DataSource MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setURL("jdbc:mysql://127.0.0.1:3306/java33?characterEncoding=utf8&useSSL=true"); dataSource.setUser("root"); dataSource.setPassword("12345678"); // 2.得到连接 Connection Connection connection = (Connection) dataSource.getConnection(); // 3.得到执行器,组装 SQL String delSQL = "delete from city where id=?"; PreparedStatement statement = connection.prepareStatement(delSQL); statement.setInt(1, 5); // 4.执行 SQL int result = statement.executeUpdate(); System.out.println("结果:" + result); // 5.关闭资源 statement.close(); connection.close(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。