JDBC知识点汇总笔记

学习过程中逐渐添加知识点。自己学习,以防忘记。

 

目录

1.JDBC开发步骤

2.入门级例子demo

3.preparedstatement向数据库中插入数据(有字段自动编号)



 

1.JDBC开发步骤

  1. 导入jar包(大多数情况下,使用 import java.sql. 就足够了)
  2. 加载JDBC驱动程序:需要你初始化一个驱动器,以便于你打开一个与数据库的通信通道。Class.forName("com.mysql.jdbc.Driver"); //固定写法
  3. 打开一个数据库连接:
    需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库的物理连接。

    Connection connection = DriverManager.getConnection(url,user,password);

    url格式:
    主协议:子协议://主机:端口/数据库名称
    jdbc :mysql :// localhost:3306/mydatabase
    user:数据库用户名
    password:连接数据库密码
  4. 执行查询:
    需要使用类型声明的对象建立并提交一个 SQL 语句到数据库。

    1)通过Connection创建Statement对象
    Connection类: 代表数据库连接,要想访问数据库,必须先获得数据库连接
    2)使用Statement对象来执行SQL语句,CRUD等操作,返回一个ResultSet对象
  5. 提取结果数据:要求使用适当的 ResultSet.getXXX() 方法从结果集中检索数据。

    next()方法:用于判断是否有下一条记录。如果有返回true,并且让游标向下移动一行,如果没有返回false。
    getXxx()方法:获取当前游标指向的这条记录中的列数据。如:getInt(),getString(),getDate(),getDouble()等。
  6. 清理环境手动关闭或依靠 JVM 的垃圾收集来关闭所有需要明确关闭的数据库资源。

 

Statement对象

  • Execute(): 运行SQL语句,返回是否有结果,返回的结果是一个对象集。
  • ExecuteQuery(): 运行查询语句,返回ResultSet对象。
  • ExecuteUpdate(): 运行更新操作,返回更新的行数。

 

2.入门级例子demo

import java.sql.*;

public class SelectData {
    //STEP1:定义jdbc驱动和数据库链接
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/students";

    static final String USER = "root";
    static final String PASS = "123456";

    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;

        try {
            //STEP2:注册jdbc驱动
            Class.forName(JDBC_DRIVER);
            System.out.println("Connecting database...");

            //STEP3:打开一个连接
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            System.out.println("Connected database...");

            //STEP4:执行sql语句
            stmt = conn.createStatement();
            String sql = "select * from REGISTRATION";
            ResultSet rs = stmt.executeQuery(sql);

            //STEP5:取结果
            while (rs.next()){
                int id = rs.getInt("id");
                int age = rs.getInt("age");
                String first = rs.getString("first");
                String last = rs.getString("last");

                System.out.print("ID: " + id + "\t" + " Age: " + age + "\t" +
                                 " First: " + first + "\t"+ " Last: " + last + "\t");
                System.out.println();
            }

            //STEP6:清理环境
            rs.close();
            stmt.close();
            conn.close();

        } catch (SQLException se){
            se.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            try {
                //关闭
                if(stmt != null)
                    conn.close();
            } catch (SQLException se){
            }

            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }

}

为啥感觉可以直接套用,只要修改中间的sql语句就可以了呢!不知道,可能这只是基础而已。加油,继续干!

 

3.preparedstatement向数据库中插入数据(有字段自动编号)

 

数据库表goods字段如下:其中GID是自动编号的。通过键盘输入其他数据。自动编号的字段弄了好久一直没有成功,网上搜也搜不到能够解决的方法。后来问了前辈,他说直接在表后面加上字段试试,不选第一个GID,呀呀呀,真的成功了,哈哈哈哈开心。

import java.sql.*;
import java.util.Scanner;

public class InsertDataHavePara {

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/long";
    static final String USER = "root";
    static final String PASS = "123456";
    
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        Scanner s = new Scanner(System.in);

        System.out.println("输入商品名称:");
        String name = s.nextLine();

        System.out.println("输入商品价格:");
        Float price = s.nextFloat();
        System.out.println("输入商品数量:");
        int num = s.nextInt();

        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            
            String sql = "insert into goods(GName,GPrice,GNum) values(?,?,?) ";

            pstmt = conn.prepareStatement(sql);

            pstmt.setString(1,name);
            pstmt.setFloat(2,price);
            pstmt.setInt(3,num);

            int i = pstmt.executeUpdate();
            if(i > 0){
                System.out.println("商品添加成功!");
            }

            pstmt.close();
            conn.close();

        }catch (SQLException se){
            se.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        } finally{
            try {
                if(pstmt != null)
                    conn.close();
            } catch (SQLException se){
            }
            try {
                if(conn != null)
                    conn.close();
            }catch (SQLException se){
                se.printStackTrace();
            }
        }
    }
}

 

参考资料:https://www.w3cschool.cn/jdbc/qfj91myi.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值