当前位置: 首页 > article >正文

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

上篇博客深入浅出学习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程序(在这里给出源代码)

源代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public classDBUtil {/*** 取得Connection* @return*/public static Connection getConnection() {Connectionconn = null;try {Class.forName("com.mysql.jdbc.Driver");Stringurl = "jdbc:mysql://localhost:3306/User";Stringusername = "root";Stringpassword = "123";conn= DriverManager.getConnection(url, username, password);}catch(ClassNotFoundException e) {e.printStackTrace();}catch(SQLException e) {e.printStackTrace();}return conn;}public static void main(String []args){System.out.println("测试开始");System.out.println(DBUtil.getConnection());System.out.println("测试结束");}
}


 

结果截图:

 


下面介绍一下JDBC接口:

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

截图:

 


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

 


 

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

 

Statement和PreparedStatement:

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

 

举例:

Statement源代码:

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class StatementTest {public static void main(String[] args) throws SQLException {String sql="insert into User (name,password,id) values ('1','2','11111')";Connection conn=DBUtil.getConnection();Statement stmt=conn.createStatement();stmt.executeUpdate(sql);System.out.println("执行成功");}}


PreparedStatement源代码:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;public class PreparedStatementTest {public static void main(String[] args) throws SQLException {String sql="insert into User (name,password,id) values (?,?,?)";Connection conn=DBUtil.getConnection();PreparedStatement pstmt=conn.prepareStatement(sql);pstmt.setString(1, "1");pstmt.setString(2, "2222");pstmt.setString(3,"3333");pstmt.executeUpdate();System.out.println("执行成功");}}


 

ResultSet

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

举例:

源代码:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class ResultSetTest {public static void main(String[] args) throws SQLException {String sql="select * from User where id=?";Connection conn=DBUtil.getConnection();PreparedStatement pstmt=conn.prepareStatement(sql);pstmt.setString(1, "11111");ResultSet rs=pstmt.executeQuery();if(rs.next()){System.out.println("name="+rs.getString("name"));System.out.println("password="+rs.getString("password"));}}}


结果:

 

 

ResultSetMetaData

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

举例:

 源代码:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;public class ResultSetMetaDataTest {public static void main(String[] args) throws SQLException {String sql ="select * from User order by id";Connection conn=DBUtil.getConnection();//获得可以前后滚动的类型Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rs=stmt.executeQuery(sql);ResultSetMetaData rsm=rs.getMetaData();System.out.println("共获的"+rsm.getColumnCount()+"列信息");for(int i=1;i<rsm.getColumnCount();i++){System.out.println("第"+i+"列的名称为"+rsm.getColumnName(i)+"类型为"+rsm.getColumnTypeName(i));}}}



结果:

 

 

总结:

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

http://www.lryc.cn/news/2417475.html

相关文章:

  • RSIC-V——指令集spec阅读笔记——向量扩展0.9
  • 双系统启动boot.ini文件的秘密
  • 中间显示内容_新品发布:松下4K超高清液晶显示器SQ1C系列TH55SQ1C火热上市
  • Java/JDK下载安装与环境配置安装(win11超详细图文版教程)
  • ssh如何直接登录就是root?
  • 学好JQuery这一篇就够了(超详细)
  • Dubbox
  • 30-Spark入门之Spark技术栈讲解、分区、系统架构、算子和任务提交方式
  • 进程间创建共享内存
  • FreeBSD 7.0 全程图解安装1
  • JUC集合类 SynchronousQueue源码解析 JDK8
  • 任老爷子退休以后,华为谁最有可能接手,为什么?
  • 10款爆火且实用的AIGC工具大盘点
  • 许多代码段,没准儿有你需要的 C++ Builder
  • 智能安全的四大挑战:如何应对未来的风险
  • 变形金刚11280超清迅雷下载
  • drwtsn32.log 占用空间很大!
  • Android雪花效果 - 自定义View
  • Microsoft Academic Research
  • 开发过程中的版本
  • 使用web页面堆叠4台华为 S5720-52X-LI-AC交换机
  • 再学习《Java2核心技术》读书笔记(2)
  • 软件程序流程图使用规范
  • JSP中Servlet的使用(笔记)
  • MSN登陆不上解决方式
  • 华为鸿蒙第一批手机是哪一款,华为鸿蒙第一批名单
  • 华尔街英语学习软件_华尔街英语核心课程功能升级 让学员学习之旅更高效
  • 距离除夕倒计时 距离2022年除夕还有多少天用便签计算
  • 推荐的五款市面上常用的免费CMS建站系统
  • 台风路径1-通过python3.7.0获取台风路径历史轨迹点数据并插入到postgresql数据库中