前言
JDBC ,即Java Database Connectivity ,java数据库连接。是一种用于执行SQL 语句的Java API ,它是Java 中的数据库连接规范。这个API 由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
一、JDBC使用步骤
1.创建项目
打开IDEA,创建一个新的项目。
2. 引入依赖
JDBC 编程需要用到 mysql 的驱动包.(驱动包就是把 mysql 自身的api 给转换成jdbc 风格的)驱动包是mysql 官方提供的。
2.1 下载驱动包
数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL 提供了Java 的驱动包mysql-connector-java ,需要基于Java 操作MySQL 即需要该驱动包。同样的,要基于Java 操作Oracle 数据库则需要Oracle 的数据库驱动包ojdbc 。 在中央仓库里面搜索mysql,出现以下页面: 点击进入,查看自己安装的MySQL版本号,如果安装的是5.* 版本,就在里面下载对应的5.1.x 系列,这里所下载的驱动版本要和MySQL的版本号相对于。 点击这个按钮,就会下载驱动包,得到一个jar 这样的文件(就相当于.zip 这样的压缩包一样),jar 里面就是一些其他人写好的.class 文件。
2.2 将驱动包导入到项目中
a)创建个目录,随便起个名字,例如叫做lib ; b)把刚才下载的jar 文件拷贝到刚才的目录中; c)右键刚才的目录,有一个选项,叫做Add as library ,点击这个选项,才能把这个jar 引入到项目中,此时项目才会从jar里面读取内部的.class ,否则,代码就找不到jar 中的一些类。
3. 编写代码
3.1 创建数据源
创建DataSource 对象,这个对象就描述了数据库服务器在哪。
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("1234");
这里的URL:
jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false
jdbc:mysql :表示这里的URL是用于jdbc mysql 的url 。 127.0.0.1 :IP地址,mysql 服务器所在的主机的IP地址,IP地址就描述了网络上一个主机的位置。这是一个特殊的IP地址就表示你的本机 IP(环回IP)。 3306 :端口号,访问你这个主机上的哪个程序;3306表示了mysql 服务器 (安装 mysql 的时候,有个环节就是设置了mysql 服务器的端口号.默认就是3306 ),每个服务器程序启动的时候,都关联一个端口号。 java1 :自己的数据库里面所创建的数据库名。 characterEncoding=utf8 :指定字符集是utf8 。 useSSL=false :不需要加密传输。
3.2 让代码和数据库建立连接
Connection connection = dataSource.getConnection();
这里所选择的Connection 是java.sql 包下的。
3.3 操作数据库(已插入数据库为例)
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int id = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();
String sql = "insert into student1 values(?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
System.out.println("statement: " + statement);
3.4 执行sql,释放资源
int ret = statement.executeUpdate();
System.out.println(ret);
statement.close();
connection.close();
DataSource/MysqlDataSource 用来描述数据源,描述数据库的地址,端口,数据库名,用户名,密码. getConnection、Connection 表示数据库连接~~ prepareStatement PreparedStatement 通过这个对象来描述要执行的SQL. executeUpdate :增删改 executeQuery :查找
二、增删改查操作
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 TestJDBE {
public static void main(String[] args) throws SQLException {
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int id = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();
String sql = "insert into student1 values(?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
System.out.println("statement: " + statement);
int ret = statement.executeUpdate();
System.out.println(ret);
statement.close();
connection.close();
}
}
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 TestJDBCDelect {
public static void main(String[] args) throws SQLException {
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
Scanner scanner = new Scanner(System.in);
System.out.println("输入要删除的id:");
int id = scanner.nextInt();
String sql = "delete from student1 where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
int ret = statement.executeUpdate();
System.out.println("ret" + ret);
statement.close();
connection.close();
}
}
2.3 修改
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 TestJDBCUpdate {
public static void main(String[] args) throws SQLException {
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的 id:");
int id = scanner.nextInt();
System.out.println("请输入要修改的 name:");
String name = scanner.next();
String sql = "update student1 set name = ? where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,id);
int ret = statement.executeUpdate();
System.out.println("ret" + ret);
statement.close();
connection.close();
}
}
2.4 查找
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 TestJDBCSelect {
public static void main(String[] args) throws SQLException {
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
Connection connection = dataSource.getConnection();
String sql = "select * from student1";
PreparedStatement statement = connection.prepareStatement(sql);
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();
}
}
以上。
|