`
paladin1988
  • 浏览: 326295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC备忘录5_核心接口

    博客分类:
  • JDBC
 
阅读更多

核心接口

(1)Connection
(2)Statement/PreparedStatement/CallableStatement
(3)ResultSet

 

Connection接口作用:
(1)获取数据库的基本信息;
(2)连接控制;
(3)事务控制;
(4)创建数据库对象;

		Connection conn = JdbcUtils.getConnection();
		
		//连接控制
		conn.isClosed();
		conn.isReadOnly();
		conn.isValid(0);
		conn.close();
		
		
		//事务控制
		conn.commit();
		conn.getTransactionIsolation();
		conn.setTransactionIsolation(conn.TRANSACTION_NONE);	//设置事务隔离级别
		conn.setAutoCommit(false);	//取消自动提交
		conn.rollback();
		
		conn.setSavepoint();	//设置事务保存点
		conn.setSavepoint("");
		
		
		//创建Statement对象
		Blob blob = conn.createBlob();
		Clob clob = conn.createClob();
		SQLXML sqlXml = conn.createSQLXML();
		
		Statement stms = conn.createStatement();
		//创建PreparedStatement
		PreparedStatement pstmt = conn.prepareStatement("");
		//创建存储过程对象
		CallableStatement cstmt = conn.prepareCall("");
		
		
		//获取连接信息
		conn.getCatalog();
		conn.getClientInfo();
		conn.getMetaData();

 

 

Statement接口

用于执行静态 SQL 语句并返回它所生成结果的对象。
在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。


PreparedStatement接口
表示预编译的 SQL 语句的对象。
SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

 

(1)执行相关的数据库操作功能;
(2)执行批处理功能,addBatch()
(3)获取结果集数据信息 ResultMetaData getMetaData()
(4)获取参数集信息    getParameterMetaDate getParameterMetaDate()


由PreparedStatement接口可获取的两个重要接口ResultSetMetaData和ParameterMetaData两个接口

 

因为 PreparedStatement 对象被预编译,所以不必执行就可以知道它将返回的 ResultSet 对象。因此,可以对 PreparedStatement 对象调用 getMetaData 方法,而不必等待执行该对象,然后再对返回的 ResultSet 对象调用 ResultSet.getMetaData 方法。

可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。以下代码片段创建 ResultSet 对象 rs,创建 ResultSetMetaData 对象 rsmd,并使用 rsmd 查找 rs 有多少列,以及 rs 中的第一列是否可以在 WHERE 子句中使用。

     ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
     ResultSetMetaData rsmd = rs.getMetaData();
     int numberOfColumns = rsmd.getColumnCount();
     boolean b = rsmd.isSearchable(1);

 

 

PreparedStatement和Statement接口的区别:


(1)PreparedStatement可以处理sql注入,并对sql中的特殊字符进行处理;
(2)Statement会频繁编译sql,造成数据库缓冲区溢出;PreparedStatement可以对sql进行预编译,提高sql执行效率;
(3)数据库和驱动可以对PreperedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)。

 

 

ResultSet接口 结果集接口

默认的结果集对象不可更新,可以通过设置滚动结果集向前向后移动。

 

创建可滚动的结果集

Statement st = 
	connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,  ResultSet.CONCUR_UPDATABLE);
	ResultSet rs = st.executeQuery(sql);
	//相关方法
	rs.beforeFirst(); rs.afterLast();rs.first();rs.isFirst();rs.last();rs.isLast();
	rs.absolute(9);rs.moveToInsertRow();

 

创建可更新的结果集

	conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					ResultSet.CONCUR_UPDATABLE);
	rs.updateString("col name", "new value");
	rs.updateRow();

 

 

两个常量:
TYPE_SCROLL_INSENSITIVE(无法感知库变化)
该常量指示可滚动但通常不受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。

TYPE_SCROLL_SENSITIVE(可以感知数据库变化)
该常量指示可滚动并且通常受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。

所谓的感知是指当我们拿到ResultSet之后,数据库中的记录发生了变化,则在遍历rs过程中,ResultSet可以感知数据库的变化,与数据库的数据保持同步。有的数据库不能支持。

 


ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称获取值。一般情况下,使用列索引较为高效。列从 1 开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,每列只能读取一次。


resultSet中getObject()与getInt(), getString()的区别?
取值后尝试转化的类型不同。

上述几个方法都是使用resultSet常用的取值方法,

索引列标志
rs.getObject(1)表示取每一个结果集行的每一列,取第一列,getObject(2)取第2列
rs.getObject(colId)根据列索引取值,colId从1开始
rs.getObject(colName)根据列名字取值

getObject(columanName)
getInt(columanName)
从指定的列名取值,并将值尝试转化为JDBC Types类中的Object类型。
从指定的列名取值,并将值尝试转化为JDBC Types类中的Integer类型。

String s = rs.getObject("userName");

从名为userName的列取值,并将取得的值尝试转换为JDBC Types类中的Object类型。
最后将转化后的值付给String s的引用。

 

 

 

 

分享到:
评论

相关推荐

    SQLite的小例子--备忘录

    2. 创建表:备忘录应用的核心是一个“备忘录”表,我们需要用SQL语句创建它。表结构可能包括ID(主键)、标题、内容和创建时间等字段。例如,创建表的SQL语句可能是: ```sql CREATE TABLE Memo ( ID INTEGER ...

    java开发备忘录

    Java开发备忘录是程序员在进行Java编程时的重要...以上仅是Java开发备忘录中的部分核心概念,实际备忘录可能还包括更具体的API使用、最佳实践、设计模式等内容。学习和掌握这些知识,对于提升Java开发能力至关重要。

    java-备忘录编写源代码及运行界面截图.docx

    该文档资源是一个Java编程的备忘录应用,包含源代码和运行界面截图。这个备忘录应用程序使用了Java Swing库来构建用户界面,允许用户进行交互。以下是代码中涉及的关键知识点: 1. **JFrame**: `Memorial` 类继承自...

    SAP JCO使用备忘录

    【SAP JCO使用备忘录】 SAP JCo(Java Connector)是SAP公司提供的一种用于Java应用程序与SAP R/3系统交互的接口。它允许Java开发者使用标准的JDBC(Java Database Connectivity)风格的API来访问SAP系统的业务逻辑...

    精选_基于Jsp和MySQL实现的个人记事备忘系统_源码打包

    【标题】"精选_基于Jsp和MySQL实现的个人记事备忘系统_源码打包"揭示了这个项目的核心——一个使用JSP(JavaServer Pages)技术和MySQL数据库构建的个人记事本或备忘录应用。这样的系统允许用户在线创建、编辑、存储...

    java 个人生活助手源码

    这个系统的核心功能包括用户注册与登录、个人信息管理、密码修改、钱包管理以及备忘录服务,同时还有休闲娱乐模块。下面我们将深入探讨这些功能背后的IT知识点。 首先,关于用户注册与登录,这是任何应用的基础。在...

    java通讯及备忘功能源码

    在Java编程语言中,开发一个通讯录和备忘录管理应用程序涉及到多个核心概念和技术。以下是对这个项目的一些关键知识点的详细解释: 1. **面向对象编程(OOP)**:Java是面向对象的语言,所以通讯录和备忘录管理器会...

    Java编写万年历.docx

    【Java编写万年历】是一个基于Java编程语言的实用应用程序,用于展示并管理长达一万年的日期及相关的备忘录。该程序涉及到多个核心类的设计,包括`Month`, `Year`, `NotePad`, `Clock`, `DBAccess`, 和 `CalendarPad...

    Java万年历.doc.doc

    3. **JDBC**:项目使用JDBC直接连接Oracle数据库,创建了一个名为mynotes的表,存储mydate(日期)和note(备忘录内容),其中mydate为主键,不允许为空。 4. **Socket + Multi-Thread**:可能在Clock类中使用了...

    Java编写万年历.pdf

    本资源是一份Java编写的万年历项目,该项目可以实现所有年份的公历日期的查询,并且在相应的日期做备忘录,以及可以显示当前的日期以及时间。使用的是 Oracle 数据库进行连接。 知识点: 1.Java 万年历项目概述 *...

    Java编写-万年历.doc

    数据库访问采用JDBC技术,直接连接Oracle数据库,创建了一个名为mynotes的表,存储日期和对应的备忘录。此外,系统还利用Socket和多线程技术(如在Clock类中的Thread t)来保证实时性。用户界面(GUI)通过Java ...

    Hibernate 备忘

    这篇备忘录主要关注Hibernate的核心概念、功能及其实现方式。通过博文链接(已省略)可获取更深入的探讨。 【标签】:“源码”、“工具” 【压缩包子文件的文件名称列表】:TestHQL **知识点详解:** 1. **...

    java设计模式大全

    行为型模式如策略模式、模板方法模式、观察者模式、迭代器模式、访问者模式、命令模式、责任链模式、备忘录模式和状态模式,它们关注对象之间的交互和职责分配。 例如,单例模式确保一个类只有一个实例,并提供全局...

    java 数据库编程

    - **代理模式与备忘录模式**:介绍了一些设计模式在实现持久化层时的应用。 - **JDBC持久化**:具体实例展示了如何使用JDBC来实现对象的持久化。 #### 十、用户界面 - **Swing简介**:Swing是Java的一个图形用户...

    Spring 3.1配置文件示例(备忘)

    这篇备忘录将深入探讨 `applicationContext.xml` 文件在 Spring 3.1 中的角色、结构和常见配置元素。我们将讨论如何通过 XML 配置来管理 Bean、属性注入、AOP(面向切面编程)、事务管理和资源加载。 首先,`...

    PIM.rar_PIM_java PIM_pim java_日程

    在信息技术领域,个人信息管理系统(Personal Information Manager,简称PIM)是一种常见的软件应用,用于帮助用户高效地管理他们的个人信息,包括联系人信息、备忘录和日程安排等。本项目名为"PIM.rar",是以Java...

    JAVA基础面试大全.doc corejavanetbook.doc jsp技术大全.pdf

    这些模式包括单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式、适配器模式、装饰模式、代理模式、桥接模式、组合模式、外观模式、享元...者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式...

    Design Patterns Workbook 英文版 (pdf)

    - **备忘录模式**:在Java中,通过备忘录模式支持撤销操作,提供了历史状态的回溯能力。 - **原型模式**:利用克隆技术快速创建对象副本,提高了创建新对象的效率。 - **命令模式**:在Java中,命令模式常用于实现...

    java面试复习资料整理,涵盖常见的面试题相关的知识

    - 行为型模式:观察者、策略、模板方法、迭代器、责任链、命令、备忘录、解释器等。 9. **Java 8及更高版本新特性** - Lambda表达式:函数式编程的引入,简化匿名内部类。 - Stream API:处理集合数据的新方式,...

    java开发面试合集-自己整理

    - 行为型模式:如策略、模板方法、观察者、迭代器、责任链、命令、备忘录、解释器模式。 7. **其他** - 架构设计:MVC、微服务、SOA等架构模式的理解和应用。 - 性能优化:包括代码优化、数据库查询优化、服务器...

Global site tag (gtag.js) - Google Analytics