1、JDBC连接与原理
package mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//模糊查询分页
public class ImportDB {
private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
//com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,
//com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的,JDBC连接Mysql6 com.mysql.cj.jdbc.Driver, 需要指定时区serverTimezone
//jdbc协议的格式:jdbc:工商的名字:子协议(由工商自己规定)。
//对mysql而言,其子协议结构://主机:端口号/数据库名称[?参数]
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/shop?useSSL=false&serverTimezone=UTC";
private static final String DATABASE_USER = "";
private static final String DATABASE_PASSWORD = "";
public static void main(String[] args) throws Exception {
int currentPage = 2 ; //当前页
int lineSize = 3 ; //每页显示的数据行
String keyWord = "茶" ; //查询关键字
String sql = " SELECT * FROM goodstable WHERE gname LIKE ? LIMIT ?,? " ;
Connection conn = null ; //每一个Connection接口对象描述的是一个用户连接
//加载驱动等价于注册驱动,因为加载驱动类时在com.mysql.cj.jdbc包的Driver类中有一个静态代码块,该代码块中注册了本类实例(registerDriver(Driver))
//com.mysql.cj.jdbc.Driver driver = new com.mysql.cj.jdbc.Driver() ;
//DriverManager.registerDriver(driver);
//jdbc4.0之后,每个驱动jar包中,在META-INF/services目录下提供了一个名为java.sql.Driver的文件,文件的内容就是该接口的实现类名称
//此句可能出现“ClassNotFoundException”异常,jar包或类名问题
Class.forName(DATABASE_DRIVER) ; //向容器中加载数据库驱动程序
//此句可能出现“SQLException”异常,参数打错
conn = DriverManager.getConnection(DATABASE_URL, DATABASE_USER, DATABASE_PASSWORD) ; //得到连接对象
PreparedStatement pstmt = conn.prepareStatement(sql) ;
pstmt.setString(1, "%" + keyWord + "%") ;
pstmt.setInt(2, (currentPage - 1) * lineSize); //从表中的第(currentPage - 1) * lineSize条数据开始
pstmt.setInt(3, lineSize); //读取三条数据
ResultSet rs = pstmt.executeQuery() ;
while(rs.next()) {
int id = rs.getInt(1) ;
String gname = rs.getString(2) ;
double gprice = rs.getDouble