Java数据库编程

pjp 9年前

原文  http://www.cnblogs.com/gzyfj/p/4492281.html


JDBC是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类库(位于java.sql和javax.sql 包中)。通过JDBC,我们可以用java编写程序,实现与特定的数据库进行连接,向数据库发送SQL语句,实现对数据库的特定操作,并对数据库返回的结果进行处理。

JDBC编程步骤:

步骤一:根据应用程序所用的数据库,选择JDBC驱动程序类型;

步骤二:连接到数据库,得到Connection对象;

步骤三:通过Connection创建Statement对象;

步骤四:使用Statement对象提交SQL语句;

步骤五:操作结果集;

步骤六:回收数据库资源。

JDBC驱动程序分为四个类型:

JDBC-ODBC Bridge: JDBC-ODBC桥 由SUN公司提供通用的驱动,能访问各种数据库,但效率极低。

Native-API partly-Java driver: 本地库Java驱动程序 执行效率高,客户端必须安装本地驱动,维护不方便。

net-protocal all-Java driver(JDBC Proxy) 网络协议纯Java驱动程序(通用) 客户端不必安装本地库,使用方便,但性能相对较低。

native-protocal all-Java driver: 本地协议完全Java驱动程序 将JDBC调用转化为特定数据库的网络协议,效率很高。

加载驱动,通过调用Class类的静态方法forName()显式地加载驱动:例如:

Class.forName(驱动程序类);

下面我们来看一段代码,以便我们了解如何去建立数据库连接:

import java.sql.Connection;  import java.sql.DriverManager;  import java.sql.PreparedStatement;  import java.sql.ResultSet;  import java.sql.SQLException;  import java.sql.Statement;  /**   * JDBC测试   *    * @author Administrator   *   */  public class JDBCDemo3 {    public static void main(String[] args) {      Connection conn = null; // 连接对象      Statement stmt = null; // Statement对象      /* 加载驱动 */      try {        Class.forName("com.mysql.jdbc.Driver");      } catch (ClassNotFoundException e) {        e.printStackTrace();      }      /* 创建Connection对象 */      // 连接字符串      String url = "jdbc:mysql://localhost:3306/jdbc";      // 用户名      String user = "root";      // 密码      String password = "123456";      try {        // 创建连接        conn = DriverManager.getConnection(url, user, password);      } catch (SQLException e) {        e.printStackTrace();      }         /* 执行的是添加多条数据到数据库中去 */      try {        stmt = conn.createStatement();        stmt.addBatch("INSERT INTO users VALUES(5, 'tom1', '000000')");        stmt.addBatch("INSERT INTO users VALUES(6, 'tom2', '000000')");        stmt.addBatch("INSERT INTO users VALUES(7, 'tom3', '789000')");        stmt.addBatch("INSERT INTO users VALUES(8, 'tom4', '456000')");        stmt.addBatch("INSERT INTO users VALUES(9, 'tom5', '123')");        stmt.executeBatch();      } catch (SQLException e1) {        e1.printStackTrace();      }        /* 释放资源:必做 */      try {        if (stmt != null)          stmt.close();      } catch (SQLException e) {        e.printStackTrace();      } finally {        if (conn != null)          try {            conn.close();          } catch (SQLException e) {            e.printStackTrace();          }      }    }  }