目录
JDBC的认识:
安装MySQL驱动包:
下载完成后将包导入IDEA
实现代码:
1.创建数据源
2.和数据库服务器建立连接
3.构造操作数据库的 sql 语句.
4.执行SQL语句
5.释放资源
完整代码:
Insert:
Select:
Update:
JDBC的认识:
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问;
由于每个厂商的数据库的API都不同,为了进行统一管理,Java提供了一套标准的API接口标准,每个数据库都得安装这套标准才能在Java中使用,这套标准就是JDBC;
JDBC的作用可以在Java中对数据库进行增删改查操作;
安装MySQL驱动包:
只要安装了JDK就自带了JDBC,JDBC是Java标准库中提供的,但是Java要想操作数据库,就得下载它的数据库驱动包,得适配到Java中
中央仓库:https://mvnrepository.com/
中央仓库:有大佬将Java中日常开发中可能会使用到的第三方库,安装包统一收集在一个网站中,这个网站就叫做“中央仓库”;
因为我使用的数据库是5.7版本的,属于旧版本,下载旧版本的驱动包即可;
随便哪个版本都行,只需前面的大版本对应你的MySQL版本就行
下载jar文件
下载完成后将包导入IDEA
1)在项目中创建一个新目录
2)将jar包复制粘贴到lib包中
3)右击.jar文件 选择 点击OK
4)添加完成
实现代码:
1.创建数据源
//1.创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("123456");
这里设置了账号密码使用的有连接方式
客户端-服务器之间的通信有俩种:
有连接:这里JDBC使用的就是这种,需要双方同意才能进行操作。
例如:打电话,A打B的电话,B必须接收才能相互通信
无连接:类似发短信,不需要对方同意,也可以直接发送
2.和数据库服务器建立连接
//2.和数据库服务器建立连接Connection connection = dataSource.getConnection();
这块不要导错包,否则会出现错误;
在getConnection()这个方法的可能会连接失败 有以下几点可能:
1.数据库服务器没有正确启动
2.url写错了
3.用户名写错了
4.密码填错了
5.网络断开.....
3.构造操作数据库的 sql 语句.
//3.构造操作数据库语句System.out.println("请输入学号: ");int id = scanner.nextInt();System.out.println("请输入姓名: ");String name = scanner.next();String sql = "insert into student values(?, ?)";PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1, id);preparedStatement.setString(2, name);
prepareStatement(sql)
方法将 SQL 语句传递给数据库,准备执行。PreparedStatement
提供了一种预编译的方式,确保 SQL 语句能更高效地执行,并且可以有效防止 SQL 注入。在sql语句中使用到?这种占位符
preparedStatement:
可以设置sql语句对应的占位符位置,并且下标是从1开始
4.执行SQL语句
//4.执行SQL语句 int n = preparedStatement.executeUpdate(); System.out.println("n = "+n);
有俩种方法:
- executeQuery() 方法执行后返回单个结果集的,通常用于select语句
- executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句
5.释放资源
//5.释放资源preparedStatement.close();connection.close();
对应前面创建的资源都得手动释放掉,以免不必要的浪费
完整代码:
Insert:
public class Demo {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);//1.创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("123456");//2.和数据库服务器建立连接Connection connection = dataSource.getConnection();//3.构造操作数据库语句System.out.println("请输入学号: ");int id = scanner.nextInt();System.out.println("请输入姓名: ");String name = scanner.next();String sql = "insert into student values(?, ?)";PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1, id);preparedStatement.setString(2, name);//4.执行SQL语句int n = preparedStatement.executeUpdate();System.out.println("n = "+n);//5.释放资源preparedStatement.close();connection.close();}
}
Select:
public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);//1.创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("123456");//2.和数据库服务器建立连接Connection connection = dataSource.getConnection();//3.构造操作数据库语句String sql = "select * from student";PreparedStatement preparedStatement = connection.prepareStatement(sql);//4.执行语句ResultSet resultSet = preparedStatement.executeQuery();//遍历结果while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println("id = "+id +", name = " + name);}//5.资源释放resultSet.close();preparedStatement.close();;connection.close();}
ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。
ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
Update:
public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);//1.建立数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("040518");//2.建立连接Connection connection = dataSource.getConnection();//3.构建sqlString sql = "update student set name = 'wangwu' where id = 2";PreparedStatement preparedStatement = connection.prepareStatement(sql);//4.执行sqlint n = preparedStatement.executeUpdate();System.out.println("n = " + n);//5.释放资源preparedStatement.close();connection.close();}