搜档网
当前位置:搜档网 › 基于Java语言实现数据库的访问_谷庆华

基于Java语言实现数据库的访问_谷庆华

基于Java语言实现数据库的访问_谷庆华
基于Java语言实现数据库的访问_谷庆华

基于Java语言实现数据库的访问

谷庆华,李成贵

(北京航空航天大学仪器科学与光电工程学院,北京100083)

数据库查询的Java实现

下面介绍利用JDBC—ODBC桥实现对Microsoft

Access数据库的SQL查询的方法。

2.1数据库建立和数据源设置

Microsoft Access具备完善的数据库功能,可以作

为独立的DBMS使用,是PC机上开发客户机/服务器

型数据库应用的优秀工具。它将若干个相互关联的表

(table)组成一个数据库(*.mdb)。这里作为例子使

用的数据库dbinfor包括2个表:tbinformation1与tbin-

formation2,其结构分别如表1、表2所示。

表1tbinformation1表结构

id name phone address email

表2tbinformation2表结构

id userid department score trial

在这2个数据表之间建立了一个关系,即在表

tbinformation1的id字段与表tbinformation2的userid

字段之间,它们内容相同。数据库制好后,打开Win-

dows的“开始”菜单,选择“设置”菜单下的“控制面

板”,从中启动微软的ODBC数据源,设置与数据库相

应的微软ODBC驱动器和数据源。

ODBC是用C语言写的在多种不同的DBMS中存

取数据的标准应用程序接口。目前应用最广的是微软

的ODBC,它几乎可将所有平台的所有数据库连接起

来。ODBC在应用程序与特定数据库之间插入一个驱

动程序管理器,每种数据库引擎都需要向驱动程序管

理器注册它自己的ODBC驱动程序,驱动程序管理器

将与ODBC兼容的SQL请求从应用程序传给ODBC

驱动程序,并由ODBC驱动程序把SQL请求翻译为对

数据库的固有调用,从而达到应用程序访问操作数据

库的目的。JDBC采用JDBC-ODBC桥接方式在Java

应用程序中使用ODBC。

2.2访问数据库的Java应用程序的编写

用JDBC编写访问、操作数据库的Java应用程序

一般完成下面4件事[4]:

(1)加载JDBC-ODBC桥驱动程序。

为了与特定的数据源相连,JDBC必须加载相应的

驱动程序。加载的方式可以采用Class.forName方法显式加载,如下面语句加载Sun公司的JDBC-ODBC

桥驱动:

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)

(2)建立与数据库的连接。

运用DriverManager类的getConnection方法建立

与数据源的连接:

sourceURL=“jdbc:odbc:”;

databaseConnection=DriverManager.getConnection (sourceURL,“Administrator”,“password”);

该语句与sourceURL对象指定的数据源建立连

接。JDBC URL提供了一种标识数据库驱动器的方

式,其中用冒号分为3部分[5],依次为:协议(在JDBC

中只能为jdbc)、子协议(用来标识一个数据库的连接机制,此处选用odbc)和子名称(ODBC数据源的名称,

为dbinfor)。

在JDBC中,java.sql.DriverManager类的目的是

提供在应用中使用的不同数据库驱动器的一个通用的访问层,使应用程序不用直接使用单独的Driver实现类,而是使用DriverManager类去得到连接。若连接成功,则返回一个Connection类的对象databaseConnec- tion,以后对这个数据源的操作都是基于databaseCon- nection对象的。

Connection类代表与数据库的连接。连接过程包

括所执行的SQL语句和在该连接上所返回的结果。

一个应用程序可与单个数据库进行一个或多个连接, 也可与多个数据库进行连接。

(3)执行SQL查询语句。

文中介绍的是基于Statement对象的查询方法。

执行SQL查询语句需要先建立一个Statement对象,

下面的语句建立名为myStatement的Statement对象: Statement myStatement

=databaseConnection.createStatement();

Statement对象用于将SQL语句发送到数据库

中。实际上有3种Statement对象,它们都可作为在给定连接上执行SQL语句的容器:Statement,Prepared- Statement(从Statement继承而来)和CallableStatement (从PreparedStatement继承而来)[6]。它们专用于发送特定类型的SQL语句:Statement对象用于执行不带

参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句;CallableState- ment对象用于执行对数据库已存储过程的调用。Statement接口提供了执行语句和获取结果的基本方法;PreparedStatement接口添加了处理IN参数的方

法;而CallableStatement添加了处理OUT参数的方

法。

通过创建Statement对象,可用这个对象的方法执

行SQL语句,并产生一个结果集对象,如下面的语句

所示:

ResultSet authorResults

=myStatement.executeQuery(queryWildcard);

该语句将在authorResults中返回查询结果,其中

queryWildcard为预先设定的SQL查询语句。

·15·第2期谷庆华等:基于Java语言实现数据库的访问DBC写的程序能够自动地将SOL语句传送给相应

的数据库管理系统。

不但如此,使用Java编写的应用程序可以在任何

支持Java的平台上运行,不必在不同的平台上编写不

同的应用程序。Java和JDBC的结合可以让开发人员

在开发数据库应用时真正实现一次编写,处处运行。

1.3JDBC接口概貌

JDBC接口分为两个层次:一个是面向程序开发人

员的JDBC API;另外一个是底层的JDBC Driver API

(驱动程序)[2]。

1.3.1JDBC API

JDBCAPI被描述成为抽象的Java接口,应用程序

可以对某个数据库打开连接,执行SQL语句并且处理

结果。最重要的接口有4个:

(1)java.sql.DriverManager,处理驱动程序的调入

并且对产生新的数据库连接提供支持。

(2)java.sql.Connection,代表对特定数据库的连

接。

(3)java.sql.Statement,代表一个特定的容器,来

对一个特定的数据库执行S语句。其中又有两个子类

型:java.sql.PreparedStatement,用于执行预编译的Java

语句;Java.sql.CallableStatement,用于执行对一个数据

库内嵌过程的调用。

(4)java.sql.ResultSet,控制对一个特定语句的行

数据的存取。

1.3.2JDBC Driver API(驱动程序)

在JDBC的发展经历中,产生了4种不同的驱动

程序[3],现分述如下:

(1)JDBC-ODBC桥加ODBC驱动程序。

这类驱动程序利用类似桥接器的技术来连接数据

库,通过JDBC-ODBC桥,开发人员可以使用JDBC来

存取ODBC数据源。不足的是,它需要在客户端安装

ODBC驱动程序,即必须安装Microsoft Windows的某

个版本,因而最适合于企业网,或者是用Java编写的3

层结构的应用程序服务器代码。连接过程如图1所

示。

图1JDBC-ODBC桥连接数据库过程图

(2)本地API部分用Java来编写的驱动程序。

JDBC驱动程序将对数据库的API从标准的JDBC

调用转换为本地调用。它们直接将JDBC API翻译成

具体数据库的API。它执行数据库开发商(如Oracle,

Sybase,Informix等)所提供的API来存取数据库,要求

在客户端安装一些本地代码,即数据库客户机应用程

序必须有合适的数据库客户机库。连接过程如图2所

示。

图2部分Java本地API驱动

程序连接数据库过程图

(3)网络协议完全的Java驱动程序。

它将JDBC API转换成独立于数据库的协议。

JDBC驱动程序并没有直接和数据库进行通讯,它和一

个中间件服务器通讯,然后这个中间件服务器和数据

库进行通讯。由于中间件服务器隐藏了Java应用程

序的细节,这种额外的中间层次更加灵活性,可以用相

同的代码访问不同的数据库。连接过程如图3所示。

图3网络协议完全的Java驱动

程序连接数据库过程图

(4)本地协议完全的Java驱动程序。

这种驱动程序是纯Java驱动程序,它直接与数据

库进行通讯,执行数据库的直接访问。使用这类驱动

程序可以说是纯Java的解决方案,它可直接通过网络

协议,将客户端的请求直接送到服务器端处理,而执行

结果也直接从服务器端取回,因此如果采用这类驱动

程序来开发Web应用系统,不需要在客户端加装任何

软件,也不需通过中介软件来进行任何转换工作。连

接过程如图4所示。

图4本地协议完全的Java驱动

程序连接数据库过程图

·14·计算机技术与发展第18卷

日期:2007-05-16

基金项目:国防“十五”重大专项建设项目(995)

作者简介:谷庆华(1980-),女,辽宁大连人,硕士研究生,研究方向

为计算机通信、数据库技术、网络编程等;李成贵,副教授,博士,从

事微纳米表面测量和表征技术、计算机测量和控制、智能仪器、虚拟

仪器等方面的教学与研究工作。

基于Java语言实现数据库的访问

谷庆华,李成贵

(北京航空航天大学仪器科学与光电工程学院,北京100083)

摘要:Java语言是目前广泛使用的网络数据库编程语言,JDBC给数据库应用开发人员提供了一种标准的应用程序设计

接口,使数据库开发人员可以用纯Java语言编写完整的数据库应用程序,Java和JDBC结合真正实现一次编写,处处运

行。介绍JDBC技术,阐述了JDBC接口技术JDBCAPI和JDBC驱动程序,给出采用JDBC-ODBC 桥来实现关系型数据库

SQL查询的实现方法。例程中采用Access2000数据库,说明了用JDBC编写访问数据库的一般步骤:加载JDBC-ODBC

桥驱动程序;建立与数据库的连接;执行SQL查询语句和处理对数据库的查询结果。所举案例对实际数据库项目的开发

有一定的实用价值。

关键词:JDBC;JDBC-ODBC桥;数据库;SQL语言

中图分类号:TP312文献标识码:A文章编号:1673-629X(2008)02-0013-04

Realizing Database Accessing Based on Java

GU Qing-hua,LI Cheng-gui

(School of Instrument Science and Opto-Electronics Engineering,

Beijing University of Aeronautics and Astronautics,Beijing 100083,China)

Abstract:Java is the most popular language used in developing net database system.JDBC provides a standard application programming

interface for programmers,so they can develop database applications using pure Java language.Java connected with JDBC can realize

write once,use everywhere.Firstly introduces JDBC technology,then JDBC API and JDBC driver are represented in details,finally a

typical example of the implementation of SQL queries with JDBC-ODBC bridge is presented.Access2000 database is adopted by the ex-

ample,the common methodsof developing database system using JDBC are discussed which include fixing the JDBC-ODBC bridge driver

programs,establishing the connection with database,executing SQL query language and dealing with required results.The example given

is useful in developing actual database program.

Key words:JDBC;JDBC-ODBC bridge;database;SQL language

1JDBC技术概述

1.1JDBC产生背景

Java语言具有健壮、安全、易于使用、易于理解和

可从网络上自动下载等特性,所以它成为了开发数据

库应用程序的一种优秀的语言。随着越来越多的程序

员开始使用Java语言,许多Java应用开发者都希望能

够编写独立于特定DBMS(DataBase Management Sys-

tem,数据库管理系统)的程序,使得与各种各样DBMS

的连接变得更为便捷,开发更加迅速。因此有必要定

义一个通用的SQL数据库存取框架,从而在各种各样

的数据库连接的模块上提供统一的界面,使与数据库

无关的Java工具和产品成为可能,使得数据库连接的

开发者可以提供各种各样的连接方案[1]。这一切所需要的只是一种Java应用程序与各种不同数据库之间

进行对话的方法,而JDBC正是实现此种对话的一种

机制。

1.2JDBC简介

JDBC是一种可用于执行SQL语句的Java API (Application Programming Interface,应用程序设计接口)。它由一组Java语言编写的类和接口组成。JDBC 给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以

用纯Java语言编写完整的数据库应用程序。

通过使用JDBC,开发人员可以很方便地将SQL

语句传送给几乎任何一种数据库。即开发人员可以不必写一个程序访问Sybase,另写一个程序访问Oracle。Statement接口提供了3种执行SQL语句的方法: executeQuery,executeUpdate和execute。使用哪一个方法由SQL语句所需产生的内容决定。方法execute- Query用于产生单个结果集的语句,例如SELECT语

句。方法executeUpdate用于执行INSERT,UPDATE

或DELETE语句以及SQLDDL(数据定义语言)语句,

例如CREATE TABLE和DROP TABLE。INSERT, UPDATE或DELETE语句的效果是修改表中零行或

多行中的一列或多列。executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)。对于CRE-

ATE TABLE或DROP TABLE等不操作行的语句,ex- ecuteUpdate的返回值总为零。方法execute用于执行返回多个结果集、多个更新计数或二者组合的语句。执行语句的所有方法都将关闭所调用的Statement对象的当前打开结果集(如果存在)。这意味着在重新执行Statement对象之前,需要完成对当前ResultSet对

象的处理。应该注意,继承了Statement接口中所有方法的PreparedStatement接口都有自己的executeQuery, executeUpdate和execute方法。Statement对象本身不包含SQL语句,因而必须给Statement.execute方法提

供SQL语句作为参数。PreparedStatement对象并不将SQL语句作为参数提供给这些方法,因为它们已经包

含预编译SQL语句。CallableStatement对象继承这些方法的PreparedStatement形式。

(4)处理对数据库的查询结果。

对authorResults对象进行处理后,才能将查询结

果显示给用户。authorResults对象包括一个由查询语句返回的一个表,这个表中包含所有的查询结果。对authorResults对象的处理必须逐行进行,而对每一行

中的各个列,可以按任何顺序进行处理。ResultSet类

的一套get方法(这些get方法可以访问当前行中的不

同列)提供了对这些行中数据的访问,并可将结果集中

的SQL数据类型转换为Java数据类型。

综上所述,即可实现利用JDBC-ODBC桥在Java

中进行数据库的查询。

3结语

讨论了利用Java语言的JDBC API和JDBC-

ODBC桥完成数据库的SQL查询的方法。在此基础

上可以构造更为复杂的查询,以满足用户的不同需求。

参考文献:

[1]李诚,王兵.Java 2简明教程[M].北京:清华大学出

版社,2004.

[2]王克宏,张炳文.Java语言SQL接口———JDBC编程技术[M].北京:清华大学出版社,2001:234-262.

[3]刘欣.基于Servlet和JDBC的Web数据库访问方案[J]. 山东电子,2003(1):18-21.

[4]刘巍,唐学兵.利用Java的多线程技术实现数据库的访问[J].计算机应用,2002(12):121-123.

[5]Java2 SDK.Standard edition documentation version 1.3.1 [M].US:SUN Microsystems,Inc,2003.

[6]Oram,Andy.Database programming with JDBC&Java pa- perback book[M].[s.l.]:O'Reilly&Associates,Inc,2000.

(上接第12页)

CTpObj)

{

ECODE ec;

if(NULL==m-pObj){

m-pObj=pObj;

pObj->AddRef();

}

else if(pObj!=m-pObj){

this->ObjDispose();

m-pObj=pObj;

pObj->AddRef();

}

}

3结语

用户要使用智能指针,只需采用宏定义#define- SMARTCLASS将相关智能指针对象引入代码,在实

现回调机制时,只需要调用智能指针相关方法完成简

单的注册工作就可以使用回调事件,在使用完毕后也

只需调用智能指针的相关方法注销该回调事件即可。

使用CAR智能指针可大大简化Callback机制的实现

复杂度。

参考文献:

[1]Koretide.Elastos2.0 Manual[M/OL].2007.http://www.

https://www.sodocs.net/doc/e012067927.html,/download/download.php?id=2.

[2]Pan https://www.sodocs.net/doc/e012067927.html,'s Principle and COM's Application[M].Bei-

jing:The Tsinghua Press,1999.

[3]Rogerson D.Inside COM:Microsoft's Component Object Mo-

del[M].[s.l.]:Microsoft Press,1999.

[4]Eckel B.Thinking in C+ +(Second Edition)[M].[s.l.]:

Prentice Hall,2002.

[5]Koretide.Website[EB/OL].2007.http://www.koretide.

https://www.sodocs.net/doc/e012067927.html,.

·16·计算机技术与发展第18卷

Java中连接MySql数据库的几种方法

JDBC Java中JDBC定义了java与各种sql数据库之间的编程接口,JDBC API是一个统一的标准应用程序编程接口,这样可以屏蔽异种数据库之间的差异。 JDBC的工作原理 JDBC与ODBC(OpenData Base Connectivity,开放式数据库连接)的作用非常类似,它在应用程序和数据库之间起到了桥梁的作用。ODBC使用的特别广泛,在java中还提供了JDBC-ODBC桥,能够在JDBC与ODBC之间进行转换,这样可以通过ODBC屏蔽不同种数据库之间的差异。在JDK的包java.sql.*中定义了一系列的类、接口、异常以及这些类和接口中定义的属性和方法,java的开发人员通过一定的规则调用java.sql.*中的API就可以实现对数据库管理系统的访问。 JDBC的四种驱动 1.JDBC-ODBC Bridge JDBC-ODBC Bridge可以访问一个ODBC数据源,但在执行Java程序的机器上必须安装ODBC驱动,并作出配置,它的调用方式如下图: 因为中间有个JDBC-ODBC,所以影响了执行效率。 配置ODBC数据源的方法如下(以Mysql为例): 第一步,打开控制面板—>管理工具--->数据源(ODBC) 选择系统DSN,这一项默认应该是空的,我这里是已经配置好了一个数据源。

第二步,点击添加 第三步,选择Mysql的ODBC驱动,点击完成。 注:MySQL的ODBC驱动在系统中一般是找不到的,因为它不是系统默认自带的驱动,所以,我们要自己安装我们所需要的MySQL的ODBC驱动。安装步骤如下: ①.下载安装包,https://www.sodocs.net/doc/e012067927.html,/downloads/connector/odbc/ ②.我们下载与自己系统相应的ODBC驱动 这里我们选择

04747java语言程序设计(一)20120年01月试卷

全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页)

Java软件开发工程师笔试题(答案)

Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C

JAVA_java数据库连接池

JAVA数据库连接池 ●基本概念及原理 ?数据库连接池是为了解决数据库对象 的共享出错问题。 ?实际就是建立一个缓冲池。 ?原理 预先在缓冲池中放入一定数量的连接, 当需要建立数据库连接时,只需从连接 池中取出一个,使用完毕之后再放回 去。 ?JDBC的API中没有提供连接池的方法。 ●连接池关键问题分析 ?使用线程同步来解决并发问题 ?使用一个单例模式的连接池管理类来 解决连接多个不同数据库。具体方法: ◆在连接池管理类的唯一实例被创建 时读取一个资源文件,其中资源文件 中存放着多个数据库的url地址()、 用户名()、密码()等信息。如 tx.url=172.21.15.123: 5000/tx_it,https://www.sodocs.net/doc/e012067927.html,er=yang, tx.password=yang321。

◆根据资源文件提供的信息,创建多 个连接池类的实例,每一个实例都是 一个特定数据库的连接池。连接池管 理类实例为每个连接池实例取一个 名字,通过不同的名字来管理不同的 连接池。 ?使用资源文件来解决同一个数据库有多个用户使用不同的名称和密码访问的情况。具体方法: ◆资源文件中设置多个具有相同url 地址,但具有不同用户名和密码的数 据库连接信息。 ?可采用每一个事务独占一个连接来实现事务处理, 这种方法可以大大降低事务管理的复杂性。具体方法: ◆Connection类可以通过设置 Connection的AutoCommit属性为 false,然后显式的调用commit或 rollback方法来实现。 ?使用空闲池来解决连接池的分配与释放处理。具体办法:

◆把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。 ◆每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接:●如果有就把建立时间最长(通过容 器的顺序存放实现)的那个连接分 配给他(实际是先做连接是否有效 的判断,如果可用就分配给用户, 如不可用就把这个连接从空闲池删 掉,重新检测空闲池是否还有连 接)。 ●如果没有则检查当前所建连接池是 否达到连接池所允许的最大连接数 (maxConn),如果没有达到,就新建 一个连接,如果已经达到,就等待 一定的时间(timeout)。如果在等 待的时间内有连接被释放出来就可 以把这个连接分配给等待的用户, 如果等待时间超过预定时间 timeout,则返回空值(null)。

完整java连接数据库步骤

完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库 ?创建一个以JDBC连接数据库的程序,包含7个步骤: 1、加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过https://www.sodocs.net/doc/e012067927.html,ng.Class类的静态方法forName(String className)实现。 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ System.out.println("找不到驱动程序类,加载驱动失败!"); e.printStackTrace() ; } 成功加载后,会将Driver类的实例注册到DriverManager类中。 2、提供JDBC连接的URL ?连接URL定义了连接数据库时的协议、子协议、数据源标识。 ?书写形式:协议:子协议:数据源标识 协议:在JDBC中总是以jdbc开始 子协议:是桥连接的驱动程序或是数据库管理系统名称。 数据源标识:标记找到数据库来源的地址与连接端口。 例如:(MySql的连接URL) jdbc:mysql: //localhost:3306/test?useUnicode=true&characterEncoding=gbk ; useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为 gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。 3、创建数据库的连接 ?要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。 ?使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。 例如: //连接MySql数据库,用户名和密码都是root String url = "jdbc:mysql://localhost:3306/test" ; String username = "root" ; String password = "root" ; try{ Connection con = DriverManager.getConnection(url , username , password ) ; }catch(SQLException se){ System.out.println("数据库连接失败!"); se.printStackTrace() ; }

Java语言程序设计课后习题答案

Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; }

Java软件中年级工程师笔试题复杂逻辑

J2E E部分 1、运算符优先级问题,下面代码的结果是多少?(笔试) package test; public class Test { public static void main(String[] args) { int k = 0; int ret = ++k + k++ + ++k + k; // ret的值为多少 } } 2、运算符问题,下面代码分别输出什么?(笔试) package test; public class Test { public static void main(String[] args) { int i1 = 10, i2 = 10; } } 3、下面代码的结果是什么?还是抛出异常?(笔试) package test; public class Test { public void myMethod(String str) { } public void myMethod(Object obj) { } public static void main(String[] args) { Test t = new Test(); t.myMethod(null); } } 4、假设今天是9月8日,下面代码输出什么?(笔试) package test; public class Test { public static void main(String[] args) { Date date = new Date(); } } 5、下面代码的输出结果是什么? package test; public class Test {

public static void main(String[] args) { double val = 11.5; } } 6、下面代码的结果是什么? package test; public class Test extends Base { public static void main(String[] args) { Base b = new Test(); b.method(); Test t = new Test(); t.method(); } @Override public void method() { } } class Base { public void method() throws InterruptedException { } } 7、以下代码的结果是什么? package test; public class Test extends Base { public static void main(String[] args) { new Test().method(); } public void method() { } } class Base { } 8、true or false? package test; public class Test { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); } } 9、输出的结果是什么?

java平时最常用的7种数据库连接方式

今天总结了java平时最常用的7种数据库连接方式,现在分享给大家 MySQL: String Driver="com.mysql.jdbc.Driver"; //驱动程序 String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name 为数据库名 String Username="username"; //用户名 String Password="password"; //密码 Class.forName(Driver).new Instance(); Connection con=DriverManager.getConnection(URL,Username,Password); Microsoft SQL Server: 1) String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接SQL数据库的方法 String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名 String Username="username"; //用户名 String Password="password"; //密码 Class.forName(Driver).new Instance(); //加载数据可驱动 Connection con=DriverManager.getConnection(URL,UserName,Password); // 2) String Driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //连接SQL数据库的方法 String URL="jdbc:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名 String Username="username"; //用户名 String Password="password"; //密码 Class.forName(Driver).new Instance(); //加载数据可驱动 Connection con=DriverManager.getConnection(URL,UserName,Password); Sysbase: String Driver="com.sybase.jdbc.SybDriver"; //驱动程序 String URL="jdbc:Sysbase://localhost:5007/db_name"; //db_name为数据可名 String Username="username"; //用户名 String Password="password"; //密码 Class.forName(Driver).newInstance(); Connection con=DriverManager.getConnection(URL,Username,Password); Oracle(用thin模式): String Driver="oracle.jdbc.driver.OracleDriver"; //连接数据库的方法String URL="jdbc:oracle:thin:@loaclhost:1521:orcl"; //orcl为数据库的SID String Username="username"; //用户名 String Password="password"; //密码 Class.forName(Driver).newInstance(); //加载数据库驱动

java软件工程师面试题集

java软件工程师面试题集 EJB方面 1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java 类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB 必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 3、EJB的基本架构 答:一个EJB包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代码

Java数据库连接池

Java数据库连接池 Tomcat6.0 Tomcat6.0连接池配置 1. 配置tomcat下的conf下的context.xml文件,在之间添加连接池配置: 2. 配置你的应用下的web.xml中的之间加入 DB Connection jdbc/oracle javax.sql.DataSource Container 3.把连接数据库的第三方驱动放到common/lib下面就ok了 4.测试程序我就不写了 1.配置tomcat下的conf下的server.xml中的host标签中添加连接池配置: 1.

java数据库连接方法

一、问题引入 在java程序中,需要访问数据库,做增删改查等相关操作。如何访问数据库,做数据库的相关操作呢? 二、Java连接数据库方法概述 java.sql提供了一些接口和类,用于支持数据库增删改查等相关的操作。该jar包定义了java访问各种不同数据库(mysql,oracle,sqlserver。。。。。)的统一接口和标准。同时,各个数据库厂商都提供了该jar包中定义的各个接口的实现类,用于具体实现本厂数据库的增删改查操作,即称之为“数据库驱动jdbc driver”。例如mysql的数据库驱动为:com.mysql.jdbc.driver;oracle的数据库驱动为:oracle.jdbc.driver.oracledriver。在java程序中访问数据库,做数据库连接时,可以采用两种方式: 1、使用java.sql API 利用该包提供的各种接口和类直接访问数据库。 例子: 2、使用数据库连接池 目前存在多个开源的java数据库连接池,这些连接池都是在java.sql基础上编写而成。 该连接池的解决的问题是: 当使用java.sql中提供的api创建数据库连接时候,需要耗费很大的资源,要进 行用户名密码数据库连接验证等,即耗费资源也耗费时间。如果在程序中,每次需 要访问数据库时候,都进行数据库连接,那么势必会造成性能低下;同时,如果用 户失误忘记释放数据库连接,会导致资源的浪费等。而数据库连接池就是解决该问 题,通过管理连接池中的多个连接对象(connection),实现connection重复利用。 从而,大大提高了数据库连接方面的性能。 该连接池的功能是: 负责创建,管理,释放,分配数据库连接即(connection)。首先,负责创建相应 数目的数据库连接对象(connection)对象,并存放到数据库连接池(connect pool)中。当用户请求数据库连接时,该连接池负责分配某个处于空闲状态的数据库连接 对象;当用户发出释放该数据库连接时,该连接池负责将该连接对象重新设置为空

《Java语言程序设计基础教程》习题解答

《Java语言程序设计基础教程》练习思考题参考答案

第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。

Java连接数据库全过程

Java连接数据库全过程 第一次用java连接数据库,开始竟然不知道从哪里下手,后看了很多书,请教了很多高手,忙了一天才连接上,所以我把这个详细的过程整理出来贡献给大家,不当的地方,希望大家告诉我,一定更正。 要准备的软件: 1.操作系统:windows xp或其他系统; 2.java运行环境:JDK 官方下载网址:https://www.sodocs.net/doc/e012067927.html,/javase/downloads/index.jsp 3.数据库:SQL server 2000; 下面是java连接数据库需要更新的东西,不然连不上的: 1安装SQL SP3补丁:“SQLSERVER2000SP3补丁.exe”,和普通的程序安装一样。 2.把3个jar包:“msbase.jar”,“mssqlserver.jar”,“msutil.jar”加到classpath中,具体的安装方法我已经详细整理:“Java连接数据库配置——加载jar包”。 Java连接数据库的核心程序文件:"TestConnect.java"如下 //TestConnect.java import java.sql.*; public class TestConnect { private Connection con=null;//Connection:与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。 String dbDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//声明数据库驱动名(这个是微软的驱动名) //String dbDriver="sun.jdbc.odbc.JdbcOdbcDriver";//sun驱动程序名 //String dbUrl="jdbc:odbc:lhs"; String dbUrl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lhs";//数据库驱动程序URL,和相应的驱动配套。 String dbUser="sa";//定义数据库登陆用户名 String dbPasw="123";//定义相应用户的登陆密码 //创建数据库连接 public void connect()

java软件工程师笔试试题

JA V A编程方面 1.Java中switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?(3’) 2.Java中String 对象能否被继承?STRING与STRINGBUFFER的区别?(6’) 3.说说你熟悉的几种Java的常用设计模式,一般在哪种情况下用到这些设计模式?你对设 计模式有什么看法?用java实现一个单例模式?(12’) 4.abstract class和interface有什么区别?(5’) 5.说说你所知道的java解析XML的方法。(4’) 6.简述ArrayList和Vector的区别,HashMap和Hashtable的区别。(20’) 7.写一个Javascript函数,返回指定的英文句子中的每个单词及其字符的起止位置。 例:”Th at is right.”应依次返回”Th at 0-4”, ”is 5-7” ,”right 8-13”(15’) 8.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变

化后的结果?那么这里到底是值传递还是引用传递? (5’) 数据库方面 1.事务是什么?(5’) 2.Oracle中有2张表格T1和T2,如下所示: T1 A B C 1 1 1 1 21 1 12 21 1 12 1 Null 12 41 2 12 4 3 T2 A B C 12 1 5 13 1 1 14 2 2 22 5 2 2 16 1 请问select * from T2 where c not in (select c from T1)结果是什么?(10’) 英文翻译(15’) Foremost amongst these is the Spring Framework's Inversion of Control (IoC) container. A thorough treatment of the Spring Framework's IoC container is closely followed by comprehensive coverage of Spring's Aspect-Oriented Programming (AOP) technologies. The Spring Framework has its own AOP framework, which is conceptually easy to understand, and which successfully addresses the 80% sweet spot of AOP requirements in Java enterprise programming. Coverage of Spring's integration with AspectJ (currently the richest - in terms of features - and certainly most mature AOP implementation in the Java enterprise space) is also provided.

java语言程序设计课后习题答案

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; =str2); ; public class Exercise51{ public static void main(String[] args) throws IOException{ "请输入一个整数:"); InputStreamReader isStream=new InputStreamReader; BufferedReader bfReader=new BufferedReader(isStream); String input=(); int length=()-1; int n=new Integer(input).intValue(); while(length>=0){ int divisor=(int) (10,length); length=length-1; int output=n/divisor; n=n%divisor; ","); } } } 法二:(建议使用) public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; thousand=n/1000%10; hundred=n/100%10; decimal=n/10%10; unit=n%10; "1678包含的数字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } ;

Java软件开发工程师笔试题(答案)

Java软件开发工程师笔试题(答案) Java工程师笔试题 1,填空(此大题10项,每空1分,共20分) 1。Java语言的三个特性是继承性、封装性和多态性2.在Java中,char 使用_ _ _ _ Unicode _ _ _ _ _ _编码方案,因此中文字符和英文字符都占用__2__字节的内存空间 3。当方法由_ _定义时,形参指的是参数行,当方法由_ _调用时,实际参数是传入的变量或值。 4。JSP内置对象,应用程序对象代表应用程序上下文,它允许JSP 页面与包含在同一应用程序中的任何网络组件共享信息,而会话对象是特定于每个客户的 5。如果你想把一个对象写到一个流中,这个类必须实现Seralizable 接口 6。在程序中实现多线程有两种方法:继承线程类和实现_ _ Runable _ interface 7。在多线程中,线程的相对优先级可以通过调用相应的setPriority()方法来修改 8。面向对象编程的五个设计原则是单一责任、开放和封闭、里氏尺度替换、依赖倒置、接口分离。通过Ajax,客户端获取的数据主要有两种类型:文本类型和xml 10。Socket通常也叫socket,用来描述__ ip和_ _ interface 2,多项选择题(这个大题20项,每项2分,共40分)

1。在JA V A中,如果父类中的一些方法不包含任何逻辑并且需要被子类重写,那么父类的这些方法应该使用()关键字来声明:a)final b)static c)abstract d)void 2。在JA V A中,已经定义了两个接口b和c。要定义实现这两个接口的类,下面的语句是正确的() a)接口aextend b,c b)接口a implements b,c c)类a mplements b,c d)类a mplements b,实现c 3。可以在JA V A接口()中定义 A)静态方法b)常量c)构造函数d)抽象方法 4。假设A有构造函数A (int a),那么在A类的其他构造函数中调用的构造函数和语句格式应该是() a)a(x)b)this . a(x)c)this(x)d)super(x) 5。如果x = 1,y = 2,z = 3,表达式y+= z-/++x的值为()a)3b)3.5°c)4d)5 6。下列关于继承的陈述中哪一个是正确的?( )a)子类只继承父类的公共方法和属性:b)子类继承父类的非私有属性和方法: C)子类继承父类的方法,但不继承父类的属性:d)子类继承所有的属性和方法。 7。在爪哇。使用JDBC时对于对同一个SQL语句的多次调用,使用()通常会提高效率 a)语句b)可调用语句c)准备语句d)prarmeters语句8。以下方法无法控制Servlet的生命周期:a)服务b)销毁c) dopost d) init9。可以分配给字节变量的值的范围是()0 ~ 65535 b) (-128) ~ 127 c) (-32,768) ~ 32,

java连接到各种数据库的方法

此文中的代码主要列出连接数据库的关键代码,其他访问数据库代码省略 1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test"; String password="test"; Connection conn= DriverManager.getConnection(url,user,password); 2、DB2数据库 Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 String user="admin"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); 3、Sql Server7.0/2000数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance (); String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; //mydb为数据库 String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); 4、Sybase数据库 Class.forName("com.sybase.jdbc.SybDriver").newInstance(); String url =" jdbc:sybase:Tds:localhost:5007/myDB"; //myDB为你的数据库名 Properties sysProps = System.getProperties(); SysProps.put("user","userid"); SysProps.put("password","user_password"); Connection conn= DriverManager.getConnection(url, SysProps); 5、Informix数据库 Class.forName("https://www.sodocs.net/doc/e012067927.html,rmix.jdbc.IfxDriver").newInstance(); String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; user=testuser;password=testpassword"; //myDB为数据库名 Connection conn= DriverManager.getConnection(url);

相关主题