如果是用Eclipse的话,先将"JDBC"的"jar"文件放到项目目录下
在Eclipse下新建“Folder”,命名为"lib"用来存放,将"jar"文件"粘贴"至"lib"文件夹下
右键"jar"文件,选择
要是变成这样,表示使用JDBC驱动成功
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/workdb?useSSL=false&characterEncoding=utf-8&user=root&password=123456";
//此处url中,workdb是连接的数据库名,root是MySQL的登录名,123456是MySQL的密码
Connection connection= DriverManager.getConnection(url);
或者这样写
String url="jdbc:mysql://127.0.0.1:3306/workdb?useSSL=false&characterEncoding=utf-8";
Connection connection= DriverManager.getConnection(url,"root","123456");
String sql="select * from tb_book";
//此处sql中,tb_book是表名,此处SQL语句作用是是列出tb_book表所有内容
要是想要带参数进行查询可以这样写:
String sql="select * from tb_book where id="+id;
//此处sql中,tb_book是表名,此处SQL语句作用是是列出tb_book表中id为变量id值的记录
或者这样:
String sql="select * from tb_book where id=?";
//此处sql中,tb_book是表名,此处SQL语句作用是是列出tb_book表中id为特定值的记录,?的值由后面执行SQL语句时传入
PreparedStatement preparedStatement=connection.prepareStatement(sql);
当SQL语句中存在"?"的时候,除了执行语句还得导入参数:
//之前的SQL语句
String sql="select * from tb_book where id=?";
//--------------------------分割线--------------------------
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,3);//通过preparedStatement.set数据类型(第几个?,数值)来传入数据
//这里是想要查询id为3的书记录
ResultSet resultSet=preparedStatement.executeQuery();
如果SQL语句是"INSERT(插入)",“DELETE(删除)”,"UPDATE(更新)"的操作的话,"preparedStatement.executeUpdate()“获得结果集,返回的是"修更改的记录条数”,是"int"类型
int n=preparedStatement.executeUpdate();
while(resultSet.next()){//resultSet.next()获取下一条返回的记录
int id=resultSet.getInt(1);//假设我需要获取数据的第一列数据存到变量id中(第一列数据是int类型)
int id=resultSet.getInt("id");//假设我需要获取数据表中"id"字段数据存到变量id中(第一列数据是int类型)
//返回的一条记录所有列都在当前resultSet对象中,通过resultSet.get数据类型(列数/数据表字段名)来获得数据
//代码体
}
如果SQL语句是"INSERT(插入)",“DELETE(删除)”,"UPDATE(更新)"的操作的话,可以通过返回整形n的数值来反馈修改了数据表中几条记录。
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
简单查询:
import java.sql.*;
public class Test {
public static void main(String[] args){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
//1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2. 创建连接
String url="jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=false&characterEncoding=utf-8&user=root&password=123456";
connection= DriverManager.getConnection(url);
//3. 写SQL语句
String sql="select * from tb_book";
//4. Statement 对象执行 SQL语句
preparedStatement=connection.prepareStatement(sql);
//5. 得到结果集
resultSet=preparedStatement.executeQuery();
//6. 处理结果集
while (resultSet.next()){
int id=resultSet.getInt(1);
System.out.println(id);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//7. 关闭连接
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
带参数查询:
import java.sql.*;
public class Test {
public static void main(String[] args){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
//1. 加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2. 创建连接
String url="jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=false&characterEncoding=utf-8&user=root&password=123456";
connection= DriverManager.getConnection(url);
//3. 写SQL语句
String sql="select * from tb_book where id=?";
//4. Statement 对象执行 SQL语句
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,3);
//5. 得到结果集
resultSet=preparedStatement.executeQuery();
//6. 处理结果集
while (resultSet.next()){
String bookname=resultSet.getString(2);
System.out.println(bookname);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//7. 关闭连接
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
1.连接数据库前先检查有没有写错数据库的账号密码,数据库是否启动等问题。
2.要是重复使用加载驱动和创建连接代码或者关闭连接代码,可以新建一个类,在类中新建静态方法,方便调用。