一、下载驱动包
中央仓库:Maven 存储库: mysql >> mysql-connector-java >> 5.1.49 (mvnrepository.com)
驱动包版本要与MySQL版本相匹配
二、将jar引入项目中
1、创建一个lib包,并把下载的jar复制到当前项目目录中。
2、把这个目录标记成库。
三、编写代码
固定流程:
java
om.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Demo {
public static void main(String[] args) throws SQLException {
//1、创建一个DataSource(javax.sql)
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("0616");
//2、建立和数据库服务器之间的连接,连接好后才能进行后续的 请求-响应 交互。
Connection connection = dataSource.getConnection();
//3、构造sql,代码中的 sql 不需要写;
String sql = "insert into student values(1, '张三')";
PreparedStatement statement = connection.prepareStatement(sql);
//4.1、(增删改)把sql发给服务器,返回值是一个整数,表示影响到的行数
int n = statement.executeUpdate();
System.out.println("n = " + n);
//4.2、(查)
ResultSet resultSet = statement.executeQuery(); //ResultSet表示结果集合
//遍历结果集合
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = " + id + ", name = " + name);
}
//释放资源
resultSet.close();
statement.close();
connection.close();
//5、执行完毕后,关闭连接,释放资源,先创建的后释放
statement.close();
connection.close();
}
}
问题一:为什么要这样写?
java
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl();
这种写法的初心是为了让 MysqlDataSource 这个类名不要扩散到代码的其他地方。后续如果要修改数据库为别的数据库,代码改动小。(耦合性降低)
java
MysqlDataSource mysqlDataSource = new MysqlDataSource();
mysqlDataSource.setUrl();
实际上这种写法也是可以的,简单直观。
问题二:URL
java
"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useSSL=false"
不用背,用的时候直接复制即可。
问题三:如何让用户输入一些信息插入呢?
java
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int id = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();
...
//3、构造sql,
String sql = "insert into student values(?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
//想添加什么类型的数据,就set什么类型,第一个数字对应上面的第几个?,从1开始