jdbc 连接mysql 数据库

来源:互联网 发布:矩阵的点乘 编辑:程序博客网 时间:2024/05/06 18:20

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
原创粉丝点击