Sun公司为Java与数据库之间提供了一套统一的接口API,使用这套API就可以通过数据库厂商提供的驱动类Driver才操作数据库。而这套API就是这里所说的API.
Database、jdbc、java-application三者之间的关系:
连接数据库的基本步骤:
1 加载驱动
Class.forName("com.mysql.jdbc.Driver");
2 获取连接,建立连接
DriverManager.getConnection(url,user,password); //分别是数据库服务器地址、用户名、密码
3 创建执行SQL的Statement
connection.createStatement();
4 执行语句返回结果集
resultSet=statement.executeQuery(sql); //sql为Select语句
5 处理结果集
5.1 通过resultRet的next()方法来判断得到的记录集中是否还有数据
5.2 若有数据,可以通过resultSet的getInt(index)/getInt(columnName)、getString(index)/getString(columnName)等方法来获取对应的数据
6 释放资源(很重要.连接对于数据库是稀有资源.不按时释放会导致最后内存减少而宕机)
resultSet 、statement、 connection依先后顺序关闭
1 try { 2 if(resultSet!=null){ 3 try { 4 resultSet.close(); 5 } catch (SQLException e) { 6 e.printStackTrace(); 7 } 8 } 9 if(statement!=null){ 10 try { 11 statement.close(); 12 } catch (SQLException e) { 13 e.printStackTrace(); 14 } 15 } 16 } catch (Exception e) { 17 } 18 finally { 19 if(connection!=null){ 20 try { 21 connection.close(); 22 } catch (SQLException e) { 23 e.printStackTrace(); 24 } 25 } 26 } 27 }
以下给演示基本的JDBC模板。下面有两个类:一个是模板类、一个是测试类。
模板类Jdbc.java
package com.vivi.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Jdbc { //参数定义 private static String url="jdbc:mysql:///mytest"; private static String user="root"; private static String password="12345"; private Jdbc(){} //加载驱动 static{ try { Class.forName("com.mysql.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } } //获取连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } //释放连接 public static void RealesaeConnectiong(ResultSet resultSet,Statement statement,Connection connection){ try { if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } if(statement!=null){ try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (Exception e) { } finally { if(connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
下面是测试类JdbcTest.java
package com.vivi.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; public class jdbcTest { public static void main(String[] args) { Temple(); } public static void Temple() { ResultSet resultSet=null; Statement statement=null; Connection connection=null; try{ connection=Jdbc.getConnection(); statement=connection.createStatement(); String sql="SELECT * FROM users"; resultSet=statement.executeQuery(sql); while(resultSet.next()){ System.out.println(resultSet.getInt(1)+":"+resultSet.getString(2)+":"+ resultSet.getInt(3)+":"+resultSet.getDate(4)); } } catch(Exception e){ e.printStackTrace(); }finally{ Jdbc.RealesaeConnectiong(resultSet, statement, connection); } } }
测试结果:
1:xiaozhang:13:2001-12-23
2:xiaohong:14:2003-12-23
3:xiaofang:14:2003-12-23