Fork me on GitHub

JDBC 实例--JDBC通过工具类DBUtil连接到数据库,让我们不再恐惧操作数据库

利用JDBC连接到数据库一般需要几个步骤:

1.装载驱动程序。

2.建立连接。

3.发送和执行SQL语句。

4.释放资源

 

首先建立一个数据库:

脚本如下:

 1 create database csdn;
 2 use csdn;
 3 -- 创建用户表
 4 CREATE TABLE USERS 
 5 (
 6   ID INT(7) NOT NULL AUTO_INCREMENT, 
 7   NAME VARCHAR(50) , 
 8   PWD VARCHAR(50), 
 9   PHONE VARCHAR(50) ,
10   PRIMARY KEY (id),
11   -- 登录用户名唯一约束
12   constraint name_unique unique(name)
13 );
14 
15 
16 
17 -- 向数据库插入模拟数据
18 insert into Users (id, name, pwd, phone) values ( 1,'Tom', '123', '110');
19 insert into Users (id, name, pwd, phone) values (2,'Jerry', 'abc', '119');
20 insert into Users (id, name, pwd, phone) values ( 3,'Andy', '456', '112');
21 
22 select * from users;

 

java连接代码如下:

新建一个项目并导入需要的jar包,完整代码如下:

 

 

 

 

  1 package com.daliu.jdbc;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 
  9 /**
 10  * 测试使用JDBC连接mysql数据库
 11  * 
 12  * @author Administrator
 13  */
 14 public class DBUtil {
 15 
 16     public static void main(String[] args) {
 17 
 18         Connection conn = null;
 19         Statement stmt = null;
 20         ResultSet rs = null;
 21 
 22         /*
 23          * 1.装载驱动程序。 当出现了: java.lang.ClassNotFoundException:
 24          * oracle.jdbc.driver.OracleDriver
 25          * 
 26          * 这个异常时,说明数据库的驱动jar包没有 导入到项目中。 若导入了jar包还报这个错误,大部分原因是 书写的驱动有错误
 27          */
 28 
 29         try {
 30             Class.forName("com.mysql.jdbc.Driver");
 31 
 32             /*
 33              * 2.建立连接。
 34              * 
 35              * 通过调用DriverManager的getConnection方法,获取Connection类的对象,建立连接。
 36              */
 37             String URL = "jdbc:mysql://localhost:3306/csdn";
 38 
 39             conn = DriverManager.getConnection(URL, "root", "123456");
 40 
 41             // 测试一下是否连接成功
 42             System.out.println(conn);
 43 
 44             /*
 45              * 3.通过Connection的createStatement()方法获取数据库操作对象Statement。
 46              * 通过调用Statement对象的executeQuery方法来执行SQL语句。
 47              */
 48             stmt = conn.createStatement();
 49             rs = stmt.executeQuery("SELECT * FROM csdn.users");
 50 
 51             /*
 52              * 4.
 53              * Statement的executeQuery方法的返回值为ResultSet对象。ResultSet表示数据库查询操作的结果集。
 54              * 它具有指向其当前数据行的光标。最初,光标被置于第一行之前,调用其next 方法将光标移动到下一行,该方法在 ResultSet
 55              * 对象没有下一行时返回 false,因此可以在 while 循环中使用它来迭代结果集。
 56              */
 57             while (rs.next()) {
 58                 System.out.println(rs.getInt("ID") + ","
 59                         + rs.getString("NAME") + ","
 60                         + rs.getString("PWD") + ","
 61                         + rs.getString("PHONE"));
 62             }
 63 
 64             /*
 65              * ResultSet提供了getXXX(String column)方法,例如:getInt(String
 66              * column)等,获取当前ResultSet 对象的当前行中指定列名的值,其中参数column表示数据库表中的列名字。
 67              */
 68         } catch (ClassNotFoundException e) {
 69             e.printStackTrace();
 70             System.out.println("驱动类无法找到!");
 71             throw new RuntimeException(e);
 72 
 73         } catch (SQLException e) {
 74             e.printStackTrace();
 75             System.out.println("数据库访问异常!");
 76             throw new RuntimeException(e);
 77         } finally {
 78 
 79             /*
 80              *5. 在finally块中,依次关闭ResultSet对象、Statement对象以及Connection对象。
 81              */
 82             try {
 83                 if (rs != null) {
 84                     rs.close();
 85                 }
 86                 if (stmt != null) {
 87                     stmt.close();
 88                 }
 89                 if (conn != null) {
 90                     conn.close();
 91                 }
 92             } catch (SQLException e) {
 93                 System.out.println("关闭连接时发生异常");
 94             }
 95 
 96         }
 97 
 98     }
 99 
100 }

 

效果如下:

posted @ 2014-12-17 21:07  刘哥聊技术  阅读(1444)  评论(0编辑  收藏  举报