渡课学习日记 20158/02/8/31 java 第九课

坚定信念把 好好学习

今天学习了JDBC 没搞懂 挺烦 一直报错 r

下星期好好补课

JDBC

JDBC:(Java Database Connectivity) Java数据库连接技术。

jar 包


jar 包就是一组类的集合,为什么要用于域名定义包的原因就在于此,一个项目中可以会引用很多的包,如果包中不能唯一标识一个类,在第三方使用的时候就有可能出现不能引用正确类的问题。

在 Eclipse 中装备 jar 文件

  • 在项目目录下新建一个文件夹 lib ,将 jar 文件拷贝到 lib 目录;
  • 在 build path 菜单中 「libraries」→ 「add jars」关联进项目;

使用 JDBC

mysql 的 JDBC 驱动 jar 包引入项目中。

开发步骤:

1.选择数据库:加载数据库驱动
2.连接数据库
3.创建数据库查询
4.获取查询结果
5.关闭查询和连接

在使用 JDBC 的时候,需要关注的几个问题

  • 查询分为操作类(增加、删除、修改)和查询类。
  • 要避免重复的创建连接,增加数据库的连接数。
    • 注意异常的处理逻辑,保证没有未关闭的无效连接存在。

完整的 JDBC 操作代码

public class Demo1 {
    public static void main(String[] args) {
        insert("Tom", "1", "Java96");
    }

    public static void insert(String name, String code, String clazz) {
        Connection conn = null;
        PreparedStatement ps = null;
        String url = "jdbc:mysql://localhost:3306/demo2";
        String user = "root";
        String password = "123456";

        try {
            // 1. 选择数据库:加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2. 连接数据库
            conn = DriverManager.getConnection(url, user, password);
            // 3. 创建数据库查询
            ps = conn.prepareStatement("INSERT1 INTO demo1(name,code,clazz) VALUES(?,?,?)");
            ps.setString(1, name);
            ps.setString(2, code);
            ps.setString(3, clazz);
            // 4. 获取查询结果
            int i = ps.executeUpdate();
            System.out.println("一共执行了" + i + "条");
        } catch (ClassNotFoundException e) {
            System.out.println("数据库驱动没有找到");
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭查询和连接
            try {
                if (null != ps) {
                    ps.close();
                }
                if (null != conn) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

考虑了连接创建效率的 JDBC 代码,以及查询的字段处理

package com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Demo2 {

    public static void main(String[] args) {
        createConn();

        for (int i = 1; i <= 100; i++) {
            String istr = String.format("%03d", i);
            exeUpdate("Jack" + istr, String.valueOf(i), "Java96");
        }
        exeQuery("Jack");

        closeConn();
    }

    private static Connection conn;

    /**
     * 创建连接
     */
    public static void createConn() {
        try {
            conn = null;
            String url = "jdbc:mysql://localhost:3306/demo2";
            String user = "root";
            String password = "123456";
            // 1. 选择数据库:加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2. 连接数据库
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            System.out.println("数据库驱动没有找到");
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void exeQuery(String name) {
        PreparedStatement ps = null;
        try {
            // 创建数据库查询
            ps = conn.prepareStatement("SELECT id,name,code,clazz FROM demo1 WHERE name LIKE ?");
            ps.setString(1, name + "%");
            // 获取查询结果
            ResultSet rs = ps.executeQuery();
            // 遍历结果
            while (rs.next()) {
                int id = rs.getInt("id");
                String name1 = rs.getString("name");
                String code = rs.getString("code");
                String clazz = rs.getString("clazz");
                System.out.println("id="+id+",name="+name1+",code="+code+",clazz="+clazz+"");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }   finally {
            // 5. 关闭查询
            try {
                if (null != ps) {
                    ps.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void exeUpdate(String name, String code, String clazz) {
        PreparedStatement ps = null;
        try {
            // 创建数据库查询
            ps = conn.prepareStatement("INSERT INTO demo1(name,code,clazz) VALUES(?,?,?)");
            ps.setString(1, name);
            ps.setString(2, code);
            ps.setString(3, clazz);
            // 获取查询结果
            int i = ps.executeUpdate();
            System.out.println("一共执行了" + i + "条");
        } catch (SQLException e) {
            e.printStackTrace();
        }   finally {
            // 5. 关闭查询
            try {
                if (null != ps) {
                    ps.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭连接
     */
    public static void closeConn() {
        // 5. 关闭连接
        try {
            if (null != conn) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值