JDBC数据库

本文详细介绍了Java使用JDBC进行数据库操作的相关知识,包括JDBC连接原理、代码规范、Connection对象、Statement与PreparedStatement的使用、ResultSet处理、结果集元数据、预处理原理以及JDBCUtils工具类的实现。此外,还涉及到了DAO模式、时间类型转换和批处理操作。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值