怎样写好一个JDBC小程序

JDBC,即Java数据库连接。JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
本篇从JDBC的七个步骤入手,讲解每一步的具体实现过程

一.加载驱动
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM。此步通过java.lang.Class类的静态方法forname(String ClassName)实现。

Class.forName("com.mysql.jdbc.Driver");

注意:在执行这步时,一定要注意将数据库的Jar包导入到项目中,否则会报错。

二.提供URL
连接URL定义了连接数据库时的协议,子协议,数据源标示"jdbc:mysql://localhost:3306/jdbctest?useUnicode=true&characterEncoding=UTF-8",“root”,"123"其中useUnicode=true表示使用Unicode字符集。如果characterEncoding设置为GBK或者是UTF-8,该参数必须设置为TRUE。characterEncoding=UTF-8字符编码方式。
其中数据库的名称要根据自己的实际情况更改。

String URL = "jdbc:mysql://localhost/db_user?useUnicode=true&characterEncoding=utf-8";

一般都会自动生成。

三.创建连接
要想链接数据库,需要向java.sql.DriverManager请求并获取Connection对象,获取的对象就代表着一个数据库的链接。数据库链接时使用的是DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。

conn = DriverManager.getConnection(URL, USER, PWD);//使用mysql驱动当中的连接数据库的API

注意:USER,PWD都是要根据实际情况更改的。

四.创建Statement
要执行sql语句,必须获得statement实例,statement实例分为以下3中类型:
1、 执行静态sql语句时,通常通过Statement实例实现。
2、 执行动态sql语句时,通常通过PreparedStatement实例实现。
3、 执行数据库存储过程,通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement();
PreparedStatement pstmt =con.prepareStatement(sql);
CallableStatement ctmt =con.prepareCall(“{CALL demoSp(?,?)}”);
下面已静态为例:

stmt = conn.createStatement();

五.执行SQL语句
Statement接口提供了三种执行sql语句的方法:executeQuery、executeUpdate和execute
1、ResultSetexecuteQuery(String sql):执行查询数据库的sql语句,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sql):用于执行insert、update或Delete语句以及sql DDL语句。
3、execute(sql):用于执行返回多个结果集、多个更新计数或二者组合的语句。
我们以查询为例:

String sql = "select * from user";
em=stmt.executeQuery(sql);

查询之前要在数据库先建好表。

六.结果处理
两种情况:
1、 执行更新返回的是本次操作影响的记录数。
2、 执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
我简单对第二种做介绍:

while(em.next()) {
    System.out.println(em.getString(1)+","+em.getString(2)+","+em.getString(3));
}

通过getString()可以方便的得到每一项。

七.关闭资源
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
1、 关闭记录集
2、 关闭声明
3、关闭连接对象

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

下面附上完整代码

import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class test {
    public static void main(String[] args) {
        String URL = "jdbc:mysql://localhost/db_user?useUnicode=true&characterEncoding=utf-8";
        String USER = "root";
        String PWD = "285311";
        ResultSet em=null;
        Statement stmt=null;
        Connection conn=null;

        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建链接
            conn = DriverManager.getConnection(URL, USER, PWD);//使用mysql驱动当中的连接数据库的API
            System.out.println("连接成功");
            //3.写sql
            String sql = "select * from user";

            //4.得到statement对象
            stmt = conn.createStatement();
            //5.执行sql,得到结果集
            em=stmt.executeQuery(sql);
            //6.处理结果集
            while(em.next()) {
                System.out.println(em.getString(1)+","+em.getString(2)+","+em.getString(3));
            }


        } catch (SQLException e1) {
            JOptionPane.showMessageDialog(null, "操作失败,数据库连接失败!", "信息", JOptionPane.ERROR_MESSAGE);
            e1.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            //7.关闭资源
            if(em!=null) {
                try {
                    em.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stmt!=null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
  }
}

运行截图
查询user表的信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值