jdbc 连接mysql 数据库

1 篇文章 0 订阅
1 篇文章 0 订阅

jdbc 连接mysql 数据库

使用jdbc连接数据库是比较简单的,下面介绍一下基本步骤。

1.注册数据库驱动

市面上有很多的数据库产品如:
- mysql
- oracle
- sql server
- db2

如何与数据库对接是依赖于特定的数据库产品的,java并没有关于此的特定实现。实际上java只是制定了数据库连接的接口(也就是jdbc),具体的实现是由数据库厂商提供的。因此若要操作某一数据库,程序中要依赖于第三方提供的驱动包。本文中使用的是mysql数据库,在安装目录下可以找到驱动包。

mysql安装目录下的驱动包

导入jar包之后下一步要做的是注册数据库驱动,代码如下所示:

code1(注册驱动1)

        try {
            // The newInstance() call is a work around for some
            // broken Java implementations

            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception ex) {
            // handle the error
        }

上面代码的意义实际上是将mysql的驱动注册给jdbc,上面的代码可能有点难以理解,创建那么一个对象有什么用呢?查看com.mysql.jdbc.Driver的源码可以发现,Driver内部有一个静态代码块,上面的代码将导致代块的代码得到执行。其实质就是将mysql的驱动注册给java的驱动管理者。

code2(com.mysql.jdbc.Driver内部静态静态代码块)

static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can\'t register driver!");
        }
    }

所以采用反射的方式实质是与下面的代码是等效的

code3(注册驱动2)

        try {
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can\'t register driver!");
        }

2.连接数据库

注册完数据库之后,下一步要做的就是连接库。连接数据库的话需要三个参数 数据库地址,用户名,以及密码。
下面是我的代码

         String url="jdbc:mysql://localhost/test?user=tiger&password=123456";
          Connection conn = DriverManager.getConnection(url);

上面的url惟一指定一个数据库,

  • localhost 服务器地址,使用默认端口3306
  • test 这是我的数据库名
  • user 后接用户名
  • password 后接密码
  • jdbc:mysql mysql连接协议固定格式,不同的类别数据库格式不一样

3数据库操作


//假定已经连接到数据库了

Statement stmt = null;
ResultSet rs = null;

try {
    stmt = conn.createStatement();
    //执行查询,会得到一个结果集
    rs = stmt.executeQuery("SELECT foo FROM bar");

    // 上面的代码可以用如下方式替换
    // 普通的数据库操作
    if (stmt.execute("SELECT foo FROM bar")) {
        rs = stmt.getResultSet();
    }
    //得到查询结果后可以在这里做一些操作

}
catch (SQLException ex){
    // handle any errors
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());
}
finally {
    // 执行完操作后,如果不在需要,记得释放资源
    // it is a good idea to release
    // resources in a finally{} block
    // in reverse-order of their creation
    // if they are no-longer needed

    if (rs != null) {
        try {
            rs.close();
        } catch (SQLException sqlEx) { } // ignore

        rs = null;
    }

    if (stmt != null) {
        try {
            stmt.close();
        } catch (SQLException sqlEx) { } // ignore

        stmt = null;
    }
}

注:上面中的参数都是直接写到代码里的,这样子的话数据库之间切换会比较麻烦,实际上应该写到配置文件里。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值