JDBC编程(一)

最近也在抽时间学习java web开发,学到JDBC感觉内容繁多,因此想用博客来记录自己的学习体会。博主是一个菜鸟,技术一般,只是想用博客来给自己形成知识体系,写的不好,勿喷。


JDBC是一套用来处理具有表格结构的数据的API,特别是关系型数据库。JDBC管理数据库需要实现一下三步骤:

  • 连接数据源,比如数据库
  • 对数据库发送查询、更新请求
  • 接收和处理从数据库查询回来的结果

    下面来说说怎么获取数据库连接并且操作数据库数据
    示例代码

package com.wnl.connect_database;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.ResourceBundle;

import org.junit.Test;

import com.mysql.jdbc.Driver;

/**
 * 介绍四种不同方法来取得数据库连接
 * 
 * @author Administrator
 * 
 */
public class JDBC_ConnectDatabase {

    @Test
    public void test1() {
        ResultSet rs = null;
        Statement stmt = null;
        Connection conn = null;
        try {
            // 使用前记得 导入mysql-connector-java-5.0.8-bin jar包
            // 1 注册驱动
            // DriverManager.registerDriver(new
            // com.mysql.jdbc.Driver());这种方法不建议使用,两次创建对象
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/javaee";// 格式:jdbc:myDriver:myDatabase
            String user = "root";// 数据库用户名
            String password = "root";// 数据库用户名密码
            // 2 获取连接
            conn = DriverManager.getConnection(url, user, password);
            // 3 创建SQL语句对象
            stmt = conn.createStatement();
            // 4 执行SQL语句
            stmt.executeQuery("select * from a");
            if (stmt.execute("select * from a")) {// 判断是否成功执行了SQL语句
                rs = stmt.getResultSet();
                while (rs.next()) {// 判断rs是否有数据,如果有全部遍历出数据
                    // String name=rs.getString(2);
                    // int number=rs.getInt(3);
                    String name = rs.getString("name");
                    int number = rs.getInt("number");
                    System.out.println("名字: " + name + " 数字: " + number);
                    /**
                     * 输出: 名字: B 数字: 2 名字: A 数字: 2 名字: B 数字: 42 名字: CC 数字: 1000
                     * 名字:Z 数字: 1 名字: Lisi 数字: 18
                     */
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            release(conn, rs, stmt);
        }
    }

    @Test
    // 使用配置文件配置信息
    public void test2() {
        ResultSet rs = null;
        Statement stmt = null;
        Connection conn = null;

        try {
            // 1 注册驱动
            // DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            Class.forName("com.mysql.jdbc.Driver");
            // 2 取得连接
            Properties info = new Properties();
            info.setProperty("user", "root");
            info.setProperty("password", "root");
            String url = "jdbc:mysql://localhost:3306/javaee";
            conn = DriverManager.getConnection(url, info);
            // 创建并执行SQL语句
            stmt = conn.createStatement();
            // stmt.executeQuery("select * from a");
            if (stmt.execute("select * from a")) {
                rs = stmt.getResultSet();
                while (rs.next()) {
                    String name = rs.getString("name");
                    int number = rs.getInt("number");
                    System.out.println("名字: " + name + " 数字: " + number);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            release(conn, rs, stmt);
        }

    }

    @Test
    public void test3() {

        ResultSet rs = null;
        Statement stmt = null;
        Connection conn = null;
        try {
            // 1 注册驱动
            // DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            Class.forName("com.mysql.jdbc.Driver");
            // 2 取得连接
            conn = DriverManager
                    .getConnection("jdbc:mysql://localhost:3306/javaee?user=root&password=root");
            // 创建并执行SQL语句
            stmt = conn.createStatement();
            // stmt.executeQuery("select * from a");
            if (stmt.execute("select * from a")) {
                rs = stmt.getResultSet();
                while (rs.next()) {
                    String name = rs.getString("name");
                    int number = rs.getInt("number");
                    System.out.println("名字: " + name + " 数字: " + number);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            release(conn, rs, stmt);
        }

    }

    @Test
    public void test4() {
        // 1 配置数据库文件:在src目录下新建.properties文件
        // 配置文件中配置好url,user,password,driverClassName的值
        // 2 取出配置信息
        ResultSet rs = null;
        Statement stmt = null;
        Connection conn = null;
        ResourceBundle rb = ResourceBundle.getBundle("database");// 文件基名,文件所在包的包名
        String driverClassName = rb.getString("driverClassName");
        String url = rb.getString("url");
        String user = rb.getString("user");
        String password = rb.getString("password");
        // 方法一
        // InputStream is=
        // JDBC_ConnectDatabase.class.getClassLoader().getResourceAsStream("src/database.properties");//包含后文件缀的文件名称名称
        // Properties info=new Properties();
        // info.load(is);
        // String url = info.getProperty("url");
        // String user = info.getProperty("user");
        // String password = info.getProperty("password");
        // String driverClassName = info.getProperty("driverClassName");
        try {
            Class.forName(driverClassName);
            conn = DriverManager.getConnection(url, user, password);
            stmt = conn.createStatement();
            // stmt.executeUpdate("insert into a (name,number) values('android',15)");
            if (stmt.execute("insert into a (name,number) values('android',15)")) {
                // stmt.execute("insert into a (name,number) values('android',15)")此语句执行一次添加操作
                // rs = stmt.getResultSet();
                // while (rs.next()) {
                // String name = rs.getString("name");
                // int number = rs.getInt("number");
                // System.out.println("名字: " + name + " 数字: " + number);
                // }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            release(conn, rs, stmt);
        }

    }

    private void release(Connection conn, ResultSet rs, Statement stmt) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            stmt = null;
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值