JDBC(Java Database Connectivity),也就是 Java数据库连接,也就是负责连接SQL的一个API接口。因为数据库供应商它们都会有一个接口让程序员去编写代码连接,但是这样的话就会出现我每用一个不同的数据库连接我就需要去学相关的接口编程这样的话就显得麻烦,所以此时就出现了JDBC,去统一实现。
在我们操作数据库时候我们需要关于这个数据库的驱动包,那我们就需要安装相关的驱动包后才能操作我们的数据库。
目录
JDBC的使用:
首先我们通过Maven这个中央仓库去下载安装我们的驱动包:
点进去后根据自己安装MySQL版本选择对应的版本进入下载:
就这样我们就完成了驱动包的准备工作。
下载后的MySQL驱动包的jar并不是单独运行的jar,我们需要把它导入我们的项目中,然后就可以调用其中的方法及其类来进行编程了。
步骤如下:
1.在idea中创建好项目后我们需要导入jar包。
记住这里不用解压
2.此时我们确定我们的MySQL已经打开服务并且能够使用,我们就可以在idea中的编写JDBC代码了,下面这些代码都是固定的模式,我们只需要知道它是代表什么含义,然后把它保存即可,以此方便后续的使用。进入项目后先标记为library
插入的使用:
到mysql中创建一张表
此时运行我们的代码:
ret = 1表示一行记录发生改变说明我们的执行的插入语句成功!
我们可以去到mysql中看到如下结果:
但是呢在上述代码中的sql语句还是存在一些问题的,也就是我们把它给写固定了,不能很好的与用户交互,所以在这里我们需要更改我们的写法。这里借助PreparedStatement的拼装功能来实现,如下所示:
其中的通过statement.set类型,看你表里字段是什么类型你就写什么类型。
插入代码:
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class InsertJDBC {
public static void main(String[] args) throws SQLException {
// 1.我们需要创建并且初始化一个数据源
Scanner scanner = new Scanner(System.in);
DataSource dataSource = new MysqlDataSource();
// 知道数据库所在的位置
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/lala?characterEncoding=utf8&userSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("285223");
// 2.与数据库服务器建立连接
Connection connection = dataSource.getConnection(); //这里开始会报错,原因是没有抛异常
// 3.构造sql语句
// String sql = "insert into desks values(1,'张三')";
// 3.从控制台读取用户的输入内容
System.out.println("请输入你的编号:");
int id = scanner.nextInt();
System.out.println("请输入你的姓名:");
String name = scanner.next();
// 为了更好的与用户进行动态交互
String sql = "insert into desks value (?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
// 打印数据,需要加到拼装数据之后
System.out.println(statement);
// 4.执行sql语句
int ret = statement.executeUpdate();
System.out.println("ret = " + ret);
// 5.释放必要的资源
statement.close();
connection.close();
}
}
最后查询、删除、更新这些操作都是类似的,只是在查询的时候需要用到一个集合去存储我们查询表的内容,然后再去遍历这个集合得到结果集。代码如下:
查询的使用:
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectJDBC {
public static void main(String[] args) throws SQLException {
// 1.创建并初始化数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/lala?characterEncoding=utf8&&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("285223");
// 2.建立连接
Connection connection = dataSource.getConnection();
// 3.构造sql语句
String sql = "select * from desks";
PreparedStatement statement = connection.prepareStatement(sql);
// 4.执行sql
ResultSet resultSet = statement.executeQuery();
// 5.遍历结果集合
//在这里我们把resultSet 想象成一个表格,同时表格这里有个光标,初始情况下光标是指向表格最上面
//每次都去调用next,光标就会往下走一行,当光标指向某一行的时候,就可以通过get类型去获取当前这行的数据
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = " + id + ", name = " + name);
}
// 6.释放资源
resultSet.close();
statement.close();
connection.close();
}
}
更新的使用:
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class UpdateJDBC {
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/lala?characterEncoding=utf8&&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("285223");
// 2.建立连接
Connection connection = dataSource.getConnection();
// 3.构造sql语句
// String sql = "update desks set name = '老鸨' where id = 1";
System.out.println("请输入要更新的名字:");
String name = scanner.next();
System.out.println("请输入更新的编号:");
int id = scanner.nextInt();
String sql = "update desks set name = ? where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,id);
// 打印数据,需要加到拼装数据之后
System.out.println(statement);
// 4.执行sql
int ret = statement.executeUpdate();
System.out.println("ret = " + ret);
// 6.释放资源
// resultSet.close();
statement.close();
connection.close();
}
}
删除的使用:
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class DeleteJDBC {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/lala?characterEncoding=utf8&&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("285223");
// 2.建立连接
Connection connection = dataSource.getConnection();
// 3.构造sql语句
// String sql = "delete from desks where id = 2";
System.out.println("请输入删除的编号:");
int id = scanner.nextInt();
String sql = "delete from desks where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
// 打印数据,需要加到拼装数据之后
System.out.println(statement);
// 4.执行sql
int ret = statement.executeUpdate();
System.out.println("ret = " + ret);
// 6.释放资源
// resultSet.close();
statement.close();
connection.close();
}
}
总结:
准备工作:
-
下载mysql驱动包(maven中央仓库)
-
在idea中新建项目,导入到项目中
-
将驱动包复制到项目目录下,标志为library
编写代码实现连接:
-
创建数据源(也就是找到数据库服务器所在的位置)
-
建立数据库连接
-
构造sql语句
-
执行sql语句
-
释放资源
以上就是通过JDBC操作mysql数据的简单操作啦,这次的操作呢也自己就是对JDBC的一个简单认识,让我知道如何通Java去操作我们的数据库,同时也提醒我需要不断回顾所学知识,不要搞忘了哦,这样才能便于后续的学习。