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 }
效果如下: