- 浏览: 497236 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (250)
- concurrent (11)
- io (1)
- CI (10)
- linux (57)
- windows (2)
- java (38)
- mac (4)
- eclipse (9)
- db (13)
- python (5)
- groovy (5)
- flex (7)
- hibernate (5)
- odb (8)
- netbeans (1)
- web (31)
- book (14)
- erlang (2)
- communication (2)
- virtualization (5)
- jUnit (0)
- jsf (1)
- perl (1)
- java jax-rs (5)
- Jenkins (2)
- Jenkins Plugin (3)
- android (2)
- git (1)
- big data (0)
- 试读 (1)
最新评论
-
yzzy4793:
讲的很清楚,明白
同步synchronized方法和代码块 -
aa51513:
中文乱码式硬伤
Jersey2.x对REST请求处理流程的分析 -
feiwomoshu1991:
...
同步synchronized方法和代码块 -
marshan:
启动失败的原因是加载的类版本冲突,因此你首先要保证依赖的版本和 ...
richfaces中facelet版本升级到2时的典型错误和解决办法 -
zhaohang6688:
请问我按照你的方式修改还是报错 错误信息还是这个 是为什么啊 ...
richfaces中facelet版本升级到2时的典型错误和解决办法
序言
数据库,程序员永远要面对的开发环节。其重要性不言而喻。我从学习vb,delphi,再到java,数据库的技术接踵而至,odbc,ado,bde,jdbc,jdo,hibernate,还有好多吧。记得图形化编程中,多半使用控件开发,比如datasource,非常方便。而Java什么都是class的风格,在数据库上依然体现得淋漓尽致。
我从今天开始要边学这些数据库技术,边写些笔记。今天推出最熟悉的JDBC
一 JDBC(Java DataBase Connectivity)
在面向对象的数据库面前,JDBC是不是老了?我们今天还有必要学习JDBC吗?作为新人的你也许会这么问。首先,关系型数据库的资格和辈分在江湖上无人能撼动,就算它吃老本儿也要些许年,而我们现在要用数据库,这是事实。其次JDBC在访问关系型数据库的技术中,是出色的一个家伙。因为它不仅可以支持我们经常用到的那些种类繁多的数据库(即与供应商无关),而且还可以实现跨平台开发(即与平台无关)。
最重要的是,JDBC开发很简单,也很普遍。
不同的数据库厂商为JDBC提供了特定的驱动,因此,我们开始jdbc的第一步就是面对Driver的开发。
JDBC Drever--DriverManager
装载:
1 使用 -Dproperty=value参数传递命令行选项给Java应用程序
Java -Djdbc.drivers=jdbc.odbc.JdbcOdbcDriver queryDB
2 使用Class类的静态方法forName()
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);
Class.forName(”COM.imaginary.sql.msql.MsqlDriver”); //mSQL
注册:
Oracle Driver例子
Class.forName(“oracle.jdbc.driver.OracleDriver“);
java.sql.DriverManager.registerDriver(new oracle.jdbc.driverOracleDriver());
打开:
Connection DriverManager.getConnection(url,userid,password);
con.close();
url的一般形式:jdbc:适当子协议://驱动程序特定的组件(机器名、端口、数据库名称);
jdbc:适当子协议:@驱动程序特定的组件(机器名、端口、数据库名称);
获取数据:
String sql=“select * from onetable“;
Statement statement=con.createStatement();
ResultSet results=statement.executeQuery(sql);
statement.colse();
获取动态SQL数据::
Stringsql=select name from idtable where id=?”;
PreparedStatement prepStatement=con.prepareStatement(sql);
prepStatement.setString(1,a_id);
ResultSet rs=prepStmt.executeQuery();
RowSet独立处理问题:
String sql=“select * from onetable“;
RowSet rs=new CachedRowSet(); //JDBCRowSet 需要和数据库永久连接,CachedRowSet不需要
rs.setCommand(sql);
rs.setUrl(url);
rs.setUsername(userid);
rs.setPassword(password);
rs.execute();
...
rs.close();
结果集ResultSet 是否可以滚动:
由DatabaseMetaData对象决定所用的JDBCs是否支持可滚动ResultSet,它的一个方法supportsReseltSetType用来测试:
DatabaseMetaData dbMD=connection.gtMetaData();
Boolean okiedoie=md.supportsResultSetType(ResultSet.TYPE_SCROLL_SENSITIVE);
if (okiedoie){
Statement statement=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
TYPE_SCROLL_SENSITIVE表示ResultSet可滚动并对其它对象引起的数据库变化敏感
CONCUR_UPDATABLE表示ResultSet可以在结果集中被更新
JDBC元数据
元数据是关于数据的数据。
DatebaseMetaData对象能够提供关于特定数据库的结构的信息。
ResultSetMetaData
JDBC数据源
使用Driver方式开发时,url是写死的,给维护带来许多不便。为了解决这一问题,JDBC2.0采用了利用JNDI映射实际数据源--DataSource的方式。
在接触数据源之前,先来介绍一下JNDI吧。
JNDI全称 Java Naming and Directory Interface。是为标准化对目录和命名服务的访问而设计的。
这些服务包括:NIS/NIS+,LDAP(Lightweight Directory Access Protocol),RMI(Java Remote Method Invocation)的reiregistry,CORBA Common Object Service(COS)名字服务 NDS、DNS、Windows注册表等等
命名服务(naming service)是计算机系统中的一个基本功能。命名服务是将名字和计算机中的一个对象相关联,通过名字可以方便地找到对应的对象。例如,计算机中的文件系统就包含了一个命名服务,你可以通过文件名找到对应的文件对象。
目录服务(directory service)是命名服务的延伸,目录服务不只保存对象和对象名的匹配,而且保存这个对象的各种属性,你可以对这些属性进行查询、修改、增加、删除操作。
JNDI结构包括两组API:
JNDI API(Application Programming Interface),Java应用程序通过JNDI API访问各种命名目录服务。
JNDI SPI(Service Provider Interface),JNDI SPI使得各种命名目录服务透明地加入到JNDI结构中。
JNDI Context
Context是一系列命名到对象绑定的集合,它提供了解析(即返回对象的查找操作)。其他操作包括:名称的绑定和取消绑定,列出绑定的名称。注意到一个上下文对象的名称可以绑定到有同样的命名约定的另一个上下文对象。这称之为子上下文。Context提供以下主要接口访问命名服务:
bind(Name name, Object obj) 建立一个命名到一个对象的匹配关系,也叫绑定
lookup(String name) 通过命名查找其对应的对象
rebind(Name name, Object obj) 重新绑定一个命名到对象,覆盖原来的绑定
unbind(Name name) 解除这个命名到其匹配对象的绑定关系
... ...
为了用名称从命名服务或目录中取得或解析对象,使用Context的lookup方法:
Object obj=contxt.lookup(name)。
JDBC数据源--DataSource
配置数据源(Tomcat为例)
server.xml:
<Context path= docBase= debug= reloadable=>
<Resource name=JNDI名 auth=Container或Application type= 类名/> <!--Container-容器管理 Application-Web应用管理-->
<ResoureParams name=JNDI名 >
<parameter>
<name>username</name>
<value>Eric Han</value>
</parameter>
...
</ResoureParams>
</Context>
web.xml:
<resource-ref>
<descrtiption>引用资源说明</descrtiption>
<res-ref-name>引用资源的JNDI名</res-ref-name>
<res-type>引用资源的类名</res-type>
<res-auth>管理者</res-auth><!--Container-容器管理 Application-Web应用管理-->
</resource-ref>
访问数据源
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup(”jdbc/one_mapping”);
Connection con=ds.getConnection();
发表评论
-
拥抱Java8第一弹
2014-01-17 11:59 2719package creative.air.java8.com ... -
Log4j2 整理
2013-12-09 12:25 812http://logging.apache.org/log4j ... -
profilers
2013-12-01 20:15 739SonarQube http://www.sonarqu ... -
JProfiler download
2013-12-01 20:01 1103Version: 8.0.1 (2013-07-31) h ... -
yjp download
2013-12-01 19:12 1089Download YourKit Java Profile ... -
Ubuntu中Java IDE启动器配置
2013-09-23 11:06 1422sudo nano /usr/share/applicati ... -
JAVA SYS TIME
2013-07-29 07:50 1059public class TestSys { //@Tes ... -
计划任务的顺序执行[Quartz Scheduler v.2.1.6]
2013-04-07 13:39 7790使用Quartz做计划任务时,默认情况下,当前任务总会执行 ... -
test list
2013-01-21 16:05 1029import java.util.ArrayList; p ... -
使用HashMap实现缓存
2012-09-07 01:28 4179本类开发中 欢迎拍砖 重伤我者 必须答谢! 实现: ... -
architect mark
2012-07-25 23:46 9651Z0_864 1Z0_865 1Z0 ... -
Windows下多版本Java并存问题
2012-05-01 23:59 9724跨平台的Java配置如下: C:\Users\Admi ... -
使用gitHub下载richfaces代码
2011-12-28 17:40 1542richfaces的源代码位于 https://github. ... -
jvm command
2011-10-18 22:05 1040/System/Library/Java/Java ... -
[童虎退壳系列]判等与哈希值的覆写
2011-10-13 01:57 1113public final class EqualsHas ... -
Java枚举
2011-06-22 10:00 867public enum TransportTy ... -
highcharts在richfaces下的实现
2011-01-12 19:40 3228highcharts是优秀的javascript图表生成工具( ... -
使用richfaces玩转json
2011-01-10 18:16 4441richfaces封装了jQuery和json,因此我们在ri ... -
JSF项目打包
2010-09-05 22:30 1176同事问我,JSF项目发布的时候,为什么编译后的类放在class ... -
SLF4J version conflict
2010-08-31 11:21 1644Here are the exception detail ...
相关推荐
Java数据库技术是Java开发中的重要组成部分,主要用于存储和管理数据。在Java中,与数据库交互主要依赖于Java Database Connectivity (JDBC) API。本资源包提供了详细的Java数据库技术讲解,包括PPT演示文稿、源代码...
Java数据库技术是Java开发中的重要组成部分,主要用于持久化应用程序的数据。在Java中,与数据库交互主要依靠Java Database Connectivity (JDBC) API。本PPT详细介绍了如何使用Java进行数据库操作,包括连接数据库、...
Java数据库技术详解 part2 因为上传限制 分2块上传
Java数据库技术是软件开发中的重要组成部分,特别是在企业级应用中,数据存储和处理的需求不可或缺。这份"java数据库技术详解ppt"涵盖了与Java编程语言和数据库交互的核心概念,旨在帮助开发者深入理解这一领域的...
总的来说,Java数据库技术在用户注册与登录中的应用,涉及到数据库连接、SQL语句的编写和执行、数据验证、安全策略等多个方面。通过合理的架构设计和优化,可以构建高效、安全的用户管理系统。在实现这些功能时,...
Java数据库技术异常数据流PPT教案主要讲解了Java与数据库交互的基础知识,特别是JDBC(Java Database Connectivity)的使用。JDBC是Sun公司为Java程序员提供的一种标准接口,用于连接和操作各种类型的数据库,实现...
Java数据库技术详解 part1 因为上传限制 分2块上传
Java数据库连接
这个压缩包很可能是为了配合某本关于Java数据库编程技术的书籍而提供的,目的是帮助读者更好地理解和实践书中介绍的理论知识。以下是根据这些信息提炼出的一些关键知识点: 1. **Java数据库连接(JDBC)**:在Java...
第5章 JDBC技术基础 5.1 JDBC概述 5.2 JDBC API 5.3 JDBC操作数据库 5.4 本章小结
JAVA数据库编程 JAVA数据库编程是指使用JAVA语言对数据库进行操作的过程。下面是JAVA数据库编程的相关知识点: 一、数据库简介 * 数据库是长期存储在计算机内的、有组织的、可共享的数据集合。 * 关系型数据库中...
Java数据库技术是软件开发中的重要组成部分,特别是在企业级应用中,数据库管理系统的使用无处不在。本资料包“java_database.rar”聚焦于JAVA与数据库的交互,涵盖了基础操作、数据库连接池以及远程数据库访问等...
【描述】:本文主要探讨了Java数据库技术与框架技术的关系,以及如何构建基于Java的数据库应用框架。作者通过实验设计和实现,旨在为相关研究者提供指导,促进信息技术领域的快速发展。 【标签】:“Java 数据库” ...
JDBC程序的工作原理 JDBC API JDBC程序的工作模板等内容
基于Java的数据库编程学习指导,里边详细介绍了建立数据库连接的具体步骤