- 浏览: 578786 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (206)
- Flask (1)
- JavaScript (3)
- Core Java (41)
- XML (1)
- Oracle (11)
- 软件安装及环境配置 (0)
- 其它 (9)
- 面试/笔试 (5)
- 项目 (0)
- JDBC (11)
- Servlet (4)
- MySql (4)
- JNDI (0)
- Hibernate (11)
- Java模式和构架设计 (0)
- Web设计 (22)
- JSP (8)
- Struts (13)
- Tomcat (2)
- Marven (2)
- SVN (2)
- Swing/AWT (1)
- jQuery (2)
- ExtJS (8)
- Python (22)
- Flex (1)
- Django (7)
- 算法 (5)
- English (1)
- Twisted (1)
- Linux (3)
- Rails (1)
- SVG (3)
- PostgreSQL (1)
步骤
1)调用Class类的forName()方法,加载并注册数据库驱动。
2)调用DriverManager类的getConnection()方法,建立到数据库的连接
3)调用Connection对象的createStatement()方法,访问数据库
4)调用Statement对象的executeQuery()方法得到ResultSet对象。
5) 调用ResultSet对象的getObject()方法,处理结果。
6)释放资源(连接应该尽可能晚建立,释放资源应尽可能早释放。)
下面是初始代码:
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** *利用JDBC连接数据库 * @author Haowang */ public class Base { public static void main(String[] args) throws Exception{ prime(); } /** * 初始代码,了解连接数据库的基本步骤 * @throws ClassNotFoundException * @throws SQLException */ private static void prime() throws ClassNotFoundException, SQLException { //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //推荐使用这种方式,不会对具体的驱动类产生依赖 // DriverManager.registerDriver(new Driver()); //会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖 // System.setProperty("jdbc.Drivers", "com.mysql.jdbc.Driver"); //虽然不会对具体的驱动类产生依赖,但注册不太方便,所以很少使用 //2.建立连接(Connection) String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); //3.创建语句(Statement) Statement st = conn.createStatement(); //4.执行语句 ResultSet rs = st.executeQuery("Select * from Students;"); //5.处理结果 while(rs.next()) { System.out.println(rs.getObject(1)+"\t"+rs.getObject(2)+"\t"+rs.getObject(3)+"\t"+rs.getObject(4)); } //6.释放资源 rs.close(); st.close(); conn.close(); } }
上面代码有很多缺陷,在实际使用过程中应进行优化:
释放资源时应该保证即使前面代码出现异常也能正常释放资源;
驱动只注册一次,采用单例模式(采用静态代码块也可以);
新建一个工具类JdbcUtils,通过这个工具类来访问数据库;
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** *Jdbc工具类 * @author HaoWang */ public class JdbcUtils { private static String url = "jdbc:mysql://localhost:3306/test"; private static String user = "root"; private static String password = "123456"; private JdbcUtils() { } static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { throw new ExceptionInInitializerError(ex); } } public static Connection getConnection() throws SQLException{ return DriverManager.getConnection(url, user, password); } public static void free(Connection conn, Statement st, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException ex) { System.out.println(ex.toString()); } finally { try { if(st!=null) { st.close(); } } catch (SQLException ex) { System.out.println(ex.toString()); } finally { try { if(conn!=null){ conn.close(); } } catch (SQLException ex) { System.out.println(ex.toString()); } } } } }
package jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * * @author Haowang */ public class Optimization { public static void main(String[] args) { optimize(); } public static void optimize() { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); //conn = JdbcUtils.getInstance().getConnection(); st = conn.createStatement(); rs = st.executeQuery("Select * from Students;"); while (rs.next()) { System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) + "\t" + rs.getObject(4)); } } catch (SQLException ex) { System.out.println(ex.toString()); } finally { JdbcUtils.free(conn, st, rs); } } }
下面是用单例模式编写的代码:
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** *Jdbc工具类 * @author HaoWang */ public class JdbcUtilsSimple { private static String url = "jdbc:mysql://localhost:3306/test"; private static String user = "root"; private static String password = "123456"; private static JdbcUtilsSimple instance = null; private JdbcUtilsSimple() { } public static JdbcUtilsSimple getInstance() { if(instance == null) { synchronized (JdbcUtilsSimple.class) { if(instance == null) { instance = new JdbcUtilsSimple(); } } } return instance; } static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { throw new ExceptionInInitializerError(ex); } } public Connection getConnection() throws SQLException{ return DriverManager.getConnection(url, user, password); } public void free(Connection conn, Statement st, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException ex) { System.out.println(ex.toString()); } finally { try { if(st!=null) { st.close(); } } catch (SQLException ex) { System.out.println(ex.toString()); } finally { try { if(conn!=null){ conn.close(); } } catch (SQLException ex) { System.out.println(ex.toString()); } } } } }
发表评论
-
JDBC中处理二进制类型数据
2010-12-07 10:39 1461package jdbc; import java.io ... -
JDBC中处理大段文本数据
2010-12-07 10:37 1292package jdbc; import java. ... -
JDBC中对数据类型(如:日期)的转换
2010-12-07 10:35 2413java.sql.Date是java.util.Date的子类 ... -
SQL的注入问题
2010-12-07 10:32 1149原始代码: package jdbc; import ... -
对数据库的CRUD(增删改查)
2010-12-07 10:05 2146package jdbc; import java.sq ... -
常用数据库的JDBC URL的形式
2010-12-07 09:38 1059SQL Server 2000 jdbc:microsoft ... -
主要数据库的JDBC驱动的类名
2010-12-07 09:35 1476微软的SQL Server 2000 com.microso ... -
JDBC驱动程序的类型
2010-12-07 08:53 11561)JDBC-ODBC桥 把标准的JDBC调用转换成相应 ... -
基于JDBC的数据库连接池技术
2010-11-09 16:07 1252近年来,随着Internet/Intranet建网技术的飞 ... -
JNDI和数据源在JDBC中的应用
2010-11-09 15:04 1618众所周知,JDBC(Java数据库连接)是Java ...
相关推荐
实验八的主题是“通过JDBC方式访问数据库”,这是数据库概论课程中的一项重要实践内容。JDBC(Java Database Connectivity)是Java语言中用于与各种数据库交互的一种标准接口,由Sun Microsystems开发并定义,现已...
JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一的访问接口。JDBC的目标是允许开发人员能够编写数据库独立的应用程序,即应用程序无需依赖于底层数据库的具体...
oracle,sql server),为了避免每一个数据库都学习一套新的api,sun公司定义了jdbc接口(方法的申明),各个数据库厂商去写实现类(驱动),这样java程序员只需要掌握jdbc的调用即可访问任何数据库
### Java利用JDBC连接数据库之插入数据 #### 技术方案概述 本文档详细介绍了如何使用Java编程语言结合JDBC(Java Database Connectivity)技术来实现与数据库的连接,并完成数据的插入操作。JDBC是一种用于执行SQL...
- **通过JDBC访问数据库的步骤:** - **创建URL:**首先需要创建一个指向特定数据源的URL,例如`String url = "jdbc:odbc:Student";`。 - **加载驱动:**使用`Class.forName()`方法加载相应的JDBC驱动程序。 - **...
本教材《JDBC API数据库编程实作教材》深入浅出地讲解了如何利用JDBC进行数据库编程。 1. **JDBC基础** - JDBC API的核心是Java.sql包,其中包含了DriverManager、Connection、Statement、ResultSet等关键接口和类...
通过JDBC访问和操纵数据库的基本步骤如下: 1. **建立数据库连接**:使用`DriverManager.getConnection()`方法连接到数据库。 2. **创建语句对象**:创建`Statement`或`PreparedStatement`对象,用于执行SQL语句。 3...
在本次实验中,实验者将通过JDBC来访问数据库,实验内容包括了多个部分,首先是UML建模、数据库设计以及通过JDBC访问数据库。UML(统一建模语言)是软件工程中广泛使用的建模语言,它提供了一套标准化的图示方法,...
综上所述,"jdbc连接数据库事务工厂模式"结合了JDBC的数据库操作、事务管理的实现以及工厂模式的设计思想,为数据库访问提供了更加灵活、可扩展的解决方案。通过工厂模式创建事务管理对象,可以在不修改原有代码的...
Java Database Connectivity (JDBC) 是 Java 平台上的标准 SQL 数据库访问技术。它提供了一种统一的方式来与各种关系型数据库进行交互,允许开发者通过标准的 API 来执行 SQL 语句、处理结果集等操作。在实际开发...
### 实验九 JDBC 访问数据库 #### 一、实验目的 本实验旨在使学习者掌握两种访问数据库的方法:一种是传统的直接访问方式,另一种则是使用数据源的方式。这两种方法在实际开发过程中都非常常见,因此了解它们的工作...
#### 三、使用JDBC访问数据库的基本步骤 1. **加载JDBC驱动**:使用`Class.forName("com.mysql.jdbc.Driver")`加载MySQL数据库的JDBC驱动。 2. **建立连接**:通过`DriverManager.getConnection(url, username, ...
以下是使用JDBC进行数据库操作的基本步骤: 1. 加载驱动:引入数据库驱动类,并通过`Class.forName()`方法加载驱动,例如`Class.forName("com.mysql.jdbc.Driver")`对于MySQL数据库。 2. 建立连接:使用`...
- **安全性问题**:直接使用JDBC访问数据库可能会带来安全风险,如SQL注入攻击等。因此,在处理用户输入时应格外小心。 - **性能考虑**:频繁地打开和关闭数据库连接可能会影响应用程序的性能。可以考虑使用连接池...
在Java开发中,JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。它由一组用Java编程语言编写的接口和类组成。本文将详细解析如何使用JDBC进行数据库连接及...
总的来说,`TestJDBC.java`源代码可能展示了如何利用JDBC连接到数据库,执行SQL查询并处理返回的结果。这个过程涉及注册数据库驱动、建立连接、创建Statement、执行查询、处理结果集,以及最后的资源释放。通过理解...
本课件主要介绍了数据库的基础知识以及如何通过JDBC访问数据库。 首先,数据库基础知识涉及到数据管理的两个阶段:文件管理和数据库管理。在文件管理阶段,数据以文件形式存储,由操作系统管理,但存在数据冗余和...
JDBC是Java平台的一部分,它为Java应用程序提供了一种标准的方法来访问关系型数据库,无论是Oracle、MySQL、SQL Server还是其他任何支持JDBC的数据库。通过JDBC,开发者可以执行SQL语句、处理结果集、事务管理等操作...
在本文中,作者介绍了如何利用JDBC连接Oracle数据库的步骤: 1. 注册Oracle数据库驱动:通过`Class.forName("oracle.jdbc.driver.OracleDriver")`加载Oracle的JDBC驱动。 2. 获取与Oracle数据库的连接:通过`...