目录
1.JDBC
概念:JDBC,即Java Database Connectivity( java数据库连接 )。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
数据库驱动包:不同的数据库对应不同的编程语言,提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。
2.Java代码操作MySQL
2.1前置条件
1> 创建个普通Java项目并创建lib库:
2> 下载MySQL驱动包,作为项目的依赖;
可以通过以下渠道下载:
1)Oracle官方网站
2)GitHub
3)中央仓库(下面下载以该渠道为例)
这里提供一个常用的中央仓库
在中央仓库中搜索mysql并选择第二个:
找到自己需要的版本,这里以5.1.49版本为例:
点击 jar 即可开始下载:
3> 将驱动包导入到项目中;
找到jar包位置,复制jar包到项目的lib目录中:
右键放jar包的目录,点击 Add as library:
准备工作就绪,接下来就可以编写代码了~~
2.2常用操作
使用步骤:1. 创建数据库连接Connection;
2. 创建操作命令Statement ;
3. 使用操作命令来执行SQL;
4. 处理结果集ResultSet;
5. 释放资源.
2.2.1插入
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 JDBCDemo1 {
public static void main(String[] args) throws SQLException {
// 数据库中有一个student表(id, name), 利用Java代码往里面插入一个数据.
// 让用户通过控制台来输入学号和姓名.
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号: ");
int id = scanner.nextInt();
System.out.println("请输入姓名: ");
String name = scanner.next();
// 1.创建"数据源".
DataSource dataSource = new MysqlDataSource();
//Url:唯一资源定位符,通常使用URL来描述网络上的资源位置.
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/javasql?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root"); //数据库所在IP地址 //想操作的数据库
((MysqlDataSource) dataSource).setPassword("123456");// 数据库的密码
/*MysqlDataSource dataSource1 = new MysqlDataSource();
dataSource1.setUrl();*/ //这种写法也可以.
// 2.和数据库服务器建立连接.
Connection connection = dataSource.getConnection(); // 选择后缀为java.sql的connection.
// 3.构造SQL语句.
String sql = "insert into student values(?, ?)";// ? 占位符,即占用一个位置.
PreparedStatement statement = connection.prepareStatement(sql);// 要将String转换为PreparedStatement.
statement.setInt(1, id);// 下标从1开始.
statement.setString(2, name);
// 4.执行SQL语句,返回值就是"这次操作影响到几行".
int n = statement.executeUpdate();
System.out.println("n = " + n);
// 5.释放必要的资源. 关闭连接.
// 注意关闭顺序,先创建的对象后关闭.
statement.close();
connection.close();
}
}
2.2.2删除
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 JDBCDemo2 {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的 id: ");
int id = scanner.nextInt();
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/javasql?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
String sql = "delete from student where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
int n = statement.executeUpdate();
System.out.println("n = " + n);
statement.close();
connection.close();
}
}
2.2.3查询
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;
import java.util.Scanner;
public class JDBCDemo3 {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查询的学号: ");
int studentId = scanner.nextInt();
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/javasql?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
// 这里同样可以包含一些占位符.
String sql = "select * from student where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, studentId);
// 执行查询操作,要使用executeQuery.返回值是一个ResultSet类型的对象.表示一个"表格"
ResultSet resultSet = statement.executeQuery();
// 遍历结果集合.
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();
}
}
MySQL结束了,向着JavaEE,出发!!