热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaWeb学习之JDBC基础(篇1)

1.JDBC简介:持久化是指将数据存储到可永久保存的存储设备中,持久化的主要应用场景是将内存中的对象存储到数据库,XML数据文件或其他种类

1.JDBC 简介:

     持久化是指将数据存储到可永久保存的存储设备中,持久化的主要应用场景是将内存中的对象存储到数据库,XML 数据文件或其他种类的磁盘文件中。 在JAVA编程中,常见的持久化方式是将程序产生的数据存储到数据库中,而JDBC 则是实现这一过程的重要工具JDBC(JAVA DATABASE Connectivity) java 数据库连接的简写,它是一套用于SQL语句的JAVA  API ,是Java 程序访问数据库的标准规范,应用程序在使用JDBC 访问特定的数据库时,需要与不同的数据库驱动进行连接,JDBC 提供接口,而驱动是接口的实现,没有驱动将无法完成数据库的连接。

                        应用程序--->JDBC---->Mysql 驱动------->Mysql 数据库                                                                                                                                应用程序--->JDBC---->Oracle 驱动----->Oracle 数据库

  JDBC 的体系结构:

   JDBC API:面向程序,供JAVA 程序开发人员使用

   JDBC Driver Manager : 注册数据库驱动,供Java 程序开发人员使用

   JDBC Driver  API: 通过数据库,供数据库厂商使用

     API 通过 Driver Manager (驱动管理器) 实现与数据库的透明连接,提供获取数据的连接,执行Sql 语句,获得结果等功能,JDBC API 使开发人员获得了标准的,纯JAVA 的数据库程序设计接口,在JAVA 程序中为访问任意类型的数据库提供支持。


   2.JDBC 开发

     编写一个JDBC 程序分为以下6个步骤:

  1. 加载并注册数据库驱动(Driver类);

  2.获取数据库连接(Connection对象);

  3.获取Sql 语句执行者(Statement对象)

  4.执行Sql语句。

  5.操作结果集(ResultSet对象)

  6.回收数据库资源

public class DBUtils{// -------------------获取连接对象的工具类应用-------------------------static {// 优先加载,且只加载一次try{Class.forName("com.mysql.jdbc.Driver");}catch {e.printStackTrackTrace(); }}
public static Connection getConnection(){Connetcion conn=null;try{conn=DriverManager.getConnection("jdbc:mysql:///lhp","root","123");}catch(SQLException e){e.printStackTrace();}return conn;}}

   加载类时,将执行被加载类的静态代码块,而com.mysql.jdbc.Driver类有一个静态代码块:

  DirverManager类是一个驱动管理类,管理一组JDBC 驱动程序,它通过属性drivers存入很多驱动类,当DriverManager获取连接的时候,它会把dirvers里的各个驱动的URL和创建连接时传进来的URL逐一比较,遇到对应的URL,则会尝试建立连接,通过DriverManager 获取连接(Connnettion对象);

    获取SQL语句执行者(Statement对象)

  Connection对象提供了3种获取Sql 语句执行者(Statement对象)的方法,其中createStatement() 方法获取Statement 对象,调用 prepareStatement()方法获取PrepareStatement对象,调用PrepareCall() 方法获取CallableStatement对象:

其中 preparedStatement 对象和 CallableStatement对象,还需要传入String类型的Sql语句作为参数。

  Statement 对象提供了 3 种方法执行Sql 语句,其中,execute()方法可以执行任何Sql 语句,executeUpdate()方法用于执行 DDL语句和DML语句,执行DDL 语句时,返回值为0,执行DML 语句时,返回值为影响的行数,executeQuery()方法用于执行实现查询功能的Sql语句,返回值是一个结果集(ResultSet对象)。

   executeQuery(sql) 执行结果ResultSet 封装了 执行查询Sql 语句后返回的结果,程序可以通过遍历结果获取每一行的数据,ResultSet对象具有执行其当前数据的指针,在最开始的时候指针被置于第一行之前,可调用ResultSet接口的next() 方法将指针移动到下一行,在实际应用中常将ResultSet接口的next()方法放在while()循环中,如果有下一行,则返回为True,遍历继续进行,如果没有下一行,则返回为 False,遍历结束。

回收数据库资源:

  为了节省资源,提升性能,包括Connection,Statement,ResultSet 在内的JDBC 资源在使用后要及时关闭,正确的关闭顺序为,先得到的后关闭,后得到的先关闭:

  

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 


推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
author-avatar
城隍山人因
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有