深入浅出学习Hibernate框架(二):JDBC基础操作

转载 2012年03月24日 21:36:01

上篇博客深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate。这篇博客将介绍JDBC的基本操作,说起这JDBC,大部分程序员是已经非常熟悉了,为了我的Hibernate学习的连载,所以在这篇要简单介绍一下JDBC的有关操作,因为这是Hibernate实现的基础,没有了JDBC也就没有了Hibernate框架,因为Hibernate框架是对JDBC做的高度封装。这篇博客主要介绍JDBC建立数据库配置连接和JDBC中的相关类和接口以及JDBC各种操作的实现。

 

希望读者能够认真的学习学习JDBC,基础的东西才是最重要的,没有基础其它一切都是浮云,当然这篇也是以后要深入学习Hibernate框架的基础和伏笔,希望读者能够好好学习一下。

 

先说什么是JDBC,JDBC是由一组用java编写的类和接口的组成。在具体的开发中,JDBC提供了一个标准的API,有了它我们能够用JAVA API来编写数据库应用程序。

 

下面来说如何建立和配置连接。数据库连接是JDBC进行查询的先决条件,而且经过了开发的朋友门都知道,现在主流的数据库都提供了本身专用的数据库连接驱动,有了数据库连接驱动给我们带来了不少帮助,但是也给我们带来了许多麻烦,例如版本不兼容等等问题。

 

下面以Mysql为例来建立和配置连接:

 

1.        加入驱动程序。拷贝Mysql的JDBC驱动到运行程序能够找到的目录

2.        确保Mysql数据库处于运行状态(前两步是傻瓜式级别的操作在这里就不介绍了)

3.        编写JDBC程序(在这里给出源代码)

源代码:

  1. import java.sql.Connection;  
  2. import java.sql.DriverManager;  
  3. import java.sql.SQLException;  
  4.    
  5. public classDBUtil {  
  6.    
  7.     /** 
  8.      * 取得Connection 
  9.      * @return 
  10.      */  
  11.     public static Connection getConnection() {  
  12.         
  13.        Connectionconn = null;  
  14.        try {  
  15.             
  16.            Class.forName("com.mysql.jdbc.Driver");  
  17.            Stringurl = "jdbc:mysql://localhost:3306/User";  
  18.            Stringusername = "root";  
  19.            Stringpassword = "123";  
  20.            conn= DriverManager.getConnection(url, username, password);  
  21.        }catch(ClassNotFoundException e) {  
  22.            e.printStackTrace();  
  23.        }catch(SQLException e) {  
  24.            e.printStackTrace();  
  25.        }  
  26.        return conn;  
  27.     }  
  28.      
  29.     public static void main(String []args){  
  30.        System.out.println("测试开始");  
  31.        System.out.println(DBUtil.getConnection());  
  32.        System.out.println("测试结束");  
  33.     }  
  34. }  


 

结果截图:

 


下面介绍一下JDBC接口:

JDBC接口是指进行数据库操作提供的公共访问方法,使用这些方法可以简化对数据库的操作,JDBC的接口放在了JDK中的java.sql包里。

截图:

 


这里面就介绍几个比较重用的也是比较重要的几个接口和一个driverManager类。

 


 

上面一部分都是枯燥的概念和理论,下面来看看JDBC如何利用这些接口和类来实现各种操作的。

 

Statement和PreparedStatement:

Statement接口代表一个数据库的状态,在向数据库发送相应的SQL语句时候都要用这两个接口。而statement是操作没有参数的sql语句,而preparedStatement即可以操作有参数的,也可以操作没有参数的,所以preparedStatement避免了sql注入问题。

 

举例:

Statement源代码:

  1. import java.sql.Connection;  
  2. import java.sql.SQLException;  
  3. import java.sql.Statement;  
  4.   
  5.   
  6. public class StatementTest {  
  7.   
  8.       
  9.     public static void main(String[] args) throws SQLException {  
  10.         String sql="insert into User (name,password,id) values ('1','2','11111')";  
  11.         Connection conn=DBUtil.getConnection();  
  12.         Statement stmt=conn.createStatement();  
  13.         stmt.executeUpdate(sql);  
  14.         System.out.println("执行成功");  
  15.           
  16.     }  
  17.   
  18. }  


PreparedStatement源代码:

  1. import java.sql.Connection;  
  2. import java.sql.PreparedStatement;  
  3. import java.sql.SQLException;  
  4. import java.sql.Statement;  
  5.   
  6.   
  7. public class PreparedStatementTest {  
  8.   
  9.       
  10.     public static void main(String[] args) throws SQLException {  
  11.         String sql="insert into User (name,password,id) values (?,?,?)";  
  12.         Connection conn=DBUtil.getConnection();  
  13.         PreparedStatement pstmt=conn.prepareStatement(sql);  
  14.         pstmt.setString(1"1");  
  15.         pstmt.setString(2"2222");  
  16.         pstmt.setString(3,"3333");  
  17.         pstmt.executeUpdate();  
  18.         System.out.println("执行成功");  
  19.   
  20.     }  
  21.   
  22. }  


 

ResultSet

ResultSet接口是查询结果集接口,它返回的结果集进行处理。

举例:

源代码:

  1. import java.sql.Connection;  
  2. import java.sql.PreparedStatement;  
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5.   
  6.   
  7. public class ResultSetTest {  
  8.   
  9.       
  10.     public static void main(String[] args) throws SQLException {  
  11.         String sql="select * from User where id=?";  
  12.         Connection conn=DBUtil.getConnection();  
  13.         PreparedStatement pstmt=conn.prepareStatement(sql);  
  14.         pstmt.setString(1"11111");  
  15.         ResultSet rs=pstmt.executeQuery();  
  16.         if(rs.next()){  
  17.             System.out.println("name="+rs.getString("name"));  
  18.             System.out.println("password="+rs.getString("password"));  
  19.         }  
  20.     }  
  21.   
  22. }  


结果:

 

 

ResultSetMetaData

ResultSetMetaData接口可以通过数组形式,遍历数据库的各个字段的属性,对于开发者来说,这个机制意义非常大。

举例:

 源代码:

  1. import java.sql.Connection;  
  2. import java.sql.ResultSet;  
  3. import java.sql.ResultSetMetaData;  
  4. import java.sql.SQLException;  
  5. import java.sql.Statement;  
  6.   
  7.   
  8. public class ResultSetMetaDataTest {  
  9.   
  10.       
  11.     public static void main(String[] args) throws SQLException {  
  12.         String sql ="select * from User order by id";  
  13.         Connection conn=DBUtil.getConnection();  
  14.         //获得可以前后滚动的类型   
  15.         Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);  
  16.           
  17.         ResultSet rs=stmt.executeQuery(sql);  
  18.         ResultSetMetaData rsm=rs.getMetaData();  
  19.         System.out.println("共获的"+rsm.getColumnCount()+"列信息");  
  20.         for(int i=1;i<rsm.getColumnCount();i++){  
  21.             System.out.println("第"+i+"列的名称为"+rsm.getColumnName(i)+"类型为"+rsm.getColumnTypeName(i));  
  22.               
  23.         }  
  24.   
  25.     }  
  26.   
  27. }  



结果:

 

 

总结:

这一篇博客对JDBC、JDBC一些重要接口做了简要的分析,主要是为了让读者对JDBC有所了解,对以后学习Hibernate有很大帮助,hibernate的操作最终也是转换为jdbc的操作。所以这篇博客的意义在于后面学习深入的引子。学习JDBC之后,在下一篇博客要介绍java反射机制,因为这个知识也对以后深入学习Hibernate有非常大的帮助。敬请期待!

深入浅出学习Hibernate框架(二):JDBC基础操作

上篇博客《深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架》简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate。这篇博客将介绍JDBC的基本操...
  • Terminator_botao
  • Terminator_botao
  • 2015年01月22日 17:18
  • 357

Hibernate学习笔记(一)——简单的Hibernate实例入门

一、Hibernate简介 Hibernate是一个开源的对象/关系映射(ORM)框架,它对JDBC进行了轻量级的封装。所谓ORM就是Object/Relationship Mapping,为什么要...
  • u011024652
  • u011024652
  • 2016年09月19日 20:32
  • 855

在 Hibernate 中直接操作 JDBC 接口

在 Hibernate 框架中提供直接操作 JDBC 接口的原因 Hibernate 框架在处理复杂查询方面的问题 Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC ...
  • yibailiheng
  • yibailiheng
  • 2016年12月29日 09:41
  • 496

Hibernate框架学习(一 )

Hibernate框架主要是实现数据库与实体类间的映射,使的操作实体类相当与操作hibernate框架。  只要实体类写好配置文件配好,就能实现和数据库的映射,其中实体类对应表,类的属性对应数据库的表...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2014年04月14日 22:57
  • 12193

Hibernate框架基础——Hibernate入门

Hibernate入门Hibernate介绍Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。Hibernate对JDBC访问数据库的...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年10月04日 12:01
  • 8082

【SSH三大框架】Hibernate基础第五篇:利用Hibernate完成简单的CRUD操作

用Hibernate完成简单的CRUD操作
  • u010800530
  • u010800530
  • 2014年11月16日 10:46
  • 2378

Hibernate操作数据库的3个准备和七个步骤,以及在SSH框架中Hibernate的配置。

1.// 三个准备 1.添加Hibernate支持 2.创建Hibernate.cfg.xml文件 3.创建对象与映射文件              4.   // 七个步骤   5. ...
  • yyq19890202
  • yyq19890202
  • 2014年07月24日 16:53
  • 1925

仿照hibernate封装的一个对数据库操作的jdbc工具类

package project02_Order_management.dao; import java.lang.reflect.Field; import java.lang.reflect.In...
  • u011936142
  • u011936142
  • 2014年04月26日 14:46
  • 2280

编写自己的JDBC框架

http://www.cnblogs.com/jbelial/archive/2013/07/18/3199061.html 一、数据库连接池:    在一般用JDBC 进行连接数据库...
  • adaptiver
  • adaptiver
  • 2016年05月05日 16:54
  • 561

拥有了JDBC,为什么还要有Hibernate和Mybatis等持久层框架?

JDBC,我想对于学Java的人简直太熟悉了,如果谁说不知道,那么狠遗憾的告诉你,你不是Java人! 这篇文章的主要目的还是想把大家引入后面我们重点要说的内容,那就是Mybatis和Hibernate...
  • andamajing
  • andamajing
  • 2017年05月05日 14:25
  • 961
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入浅出学习Hibernate框架(二):JDBC基础操作
举报原因:
原因补充:

(最多只允许输入30个字)