(1)编程语言,如Java,C、C++、Python
等
(2)数据库,如Oracle,MySQL,SQL Server
等
(3)数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL
提供了Java
的驱动包mysql-connector-java
,需要基于Java
操作MySQL
即需要该驱动包。
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的**Java API**
,它是Java中的数据库连接规范。这个API由java.sql.*,javax.sql.*
包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
(1)下载MySQL驱动包(maven中央仓库,大版本要和MySQL一致)
(2)导入到项目中(复制到项目目录下)
(1)创建数据源(描述数据库服务器所在位置)
(2)建立连接
(3)构造SQL语句
(4)执行SQL语句
(5)释放资源
插入数据:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class JDBCinsert2 {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
// JDBC 需要通过以下步骤来完成开发.
// 1. 创建并初始化一个数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test_jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("20030603");
// 2. 和数据库服务器建立连接.
Connection connection = dataSource.getConnection();
// 3. 从控制台读取用户输入的内容
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学号:");
int id = scanner.nextInt();
// 4. 构造 SQL 语句
String sql = "insert into student value (?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
System.out.println(statement);
// 5. 执行 SQL 语句
int ret = statement.executeUpdate();
System.out.println("ret = " + ret);
// 6. 释放必要的资源
statement.close();
connection.close();
}
}
查询:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCselect {
public static void main(String[] args) throws SQLException {
// 1. 创建并初始化数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test_jdbc?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("20030603");
// 2. 建立连接
Connection connection = dataSource.getConnection();
// 3. 构造 SQL
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
// 4. 执行 SQL
ResultSet resultSet = statement.executeQuery();
// 5. 遍历结果集合
while (resultSet.next()) {
// 把 resultSet 想象成一个表格. 同时表格这里有个光标, 初始情况下光标指向表最上面~~
// 每次调用 next, 光标往下走一行~~
// 当光标指向某一行的时候, 就可以通过 getXXX 来获取到当前这行里的数据
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id = " + id + ", name = " + name);
}
// 6. 释放资源
resultSet.close();
statement.close();
connection.close();
}
}