
(1)JDBC-ODBC桥加ODBC驱动程序
JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。
(2)本地API
这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。
(3)JDBC网络纯Java驱动程序
这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。
(4)本地协议纯Java驱动程序
这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。
据专家预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首方法。第(1)、(2)类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。对第(1)、(2)类驱动程序可能会有一些变种,这些变种要求有连接器,但通常这些是更加不可取的解决方案。第(3)、(4)类驱动程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的来下载该驱动程序)。
建议:可以用xml来描述记录结构,解析起来也方便快捷
以下提供对象模型以及实现如果认可代码,请加分 200,谢谢!
先看看记录的每一行是如何用JAVA面向对象思想描述
public interface RowData {
public int getColumns();
public Object getDataAtColumn(int column);
}
再看解析器有哪些功能可对外提供:
import javaio;
public interface RowDataParser {
public RowData[] parser(InputStream in) throws IOException;
public void save(RowData[] datas,OutputStream out) throws IOException;
}
话费单上的每行记录的实现:
final public class Fee implements RowData{
private String mobile;
private String name;
private String password;
private float fee;
public Fee(String mobileNumber,String name,String password,float fee) {
setMobile(mobileNumber);
thissetName(name);
thissetPassword(password);
thissetFee(fee);
}
public Fee(){}
public int getColumns() {return 4;}
public String toString() {
return "mobile="+mobile + " name="+name + " password="+password+" fee="+fee;
}
public Object getDataAtColumn(int column) {
switch (column) {
case 0: return getMobile();
case 1: return getName();
case 2: return getPassword();
case 3: return getFee();
default:return null;
}
}
public String getMobile() {return mobile;}
public void setMobile(String mobile) {thismobile = mobile;}
public String getName() {return name;}
public void setName(String name) {thisname = name;}
public String getPassword() {return password;}
public void setPassword(String password) {thispassword = password;}
public float getFee() {return fee;}
public void setFee(float fee) {thisfee = fee;}
}
解析器的实现
import javaio;
import javautil;
final public class DefaultRowDataParser implements RowDataParser{
private final static int BUFFER_SIZE = 200;
private final static String SPLIT_STRING = " ";
public RowData[] parser(InputStream in) throws IOException {
InputStreamReader inReader = new InputStreamReader(in);
BufferedReader bufReader = new BufferedReader(inReader,BUFFER_SIZE);
List<RowData> datas = new ArrayList<RowData>();
String s;
for (s = bufReaderreadLine(); s!=null; ) {
Fee fee = new Fee();
String[] ds = ssplit(SPLIT_STRING);
feesetMobile(ds[0]);
feesetName(ds[1]);
feesetPassword(ds[2]);
feesetFee(FloatparseFloat(ds[3]));
datasadd(fee);
s = bufReaderreadLine();
}
bufReaderclose();
inReaderclose();
return datastoArray(new RowData[]{});
}
public void save(RowData[] datas,OutputStream out) throws IOException {
OutputStreamWriter ow = new OutputStreamWriter(out);
BufferedWriter bufOut = new BufferedWriter(ow);
for (RowData rd : datas) {
for (int i = 0,j=rdgetColumns(); i < j; i++) {
bufOutwrite(rdgetDataAtColumn(i)toString());
bufOutwrite(SPLIT_STRING);
}
bufOutwrite("\r\n");
}
bufOutclose();
owclose();
}
}
ClassforName("oraclejdbcdriverOracleDriver");
Connection conn=DriverManagergetConnection("数据库url","帐号","密码");
state=conncreateStatement();
stateexecuteUpdate("create 建表语句");
stateexecuteUpdate("insert 插入数据")------>插入的值由页面获得,注意字符串拼接。
然后就是关闭连接,stateclose();connclose();
核心代码就是这些,具体应用你可以多写几个方法(增删改查),都是类似的,注意异常的处理,关闭连接最好在finally中进行。
在JAVA开发中数据库的学习也是我们需要了解的,截下来几篇文章都是关于数据库的设计和应用,那么java课程培训机构废话不多说开始学习吧!
数据库的设计
数据库设计是基础,数据库优化是建立在设计基础之上的。好的数据库一定拥有好的设计。
数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效的运行环境。
数据库的三大范式
第一范式1NF:所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
第二范式2Nf:第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
第三范式3Nf:所有字段必须与主键直接相关,而不是间接相关。也可以理解为字段不要和其他非主键字段相关
注意:这三个范式尽可能去遵守,不是一定要墨守成规这只是让我们设计的表的时候,越靠近这些范式,可以使字段尽量的减小冗余但是有时候也可以根据实际需要小小的违背一下但是第三范式违反一下还可以接受,但是第一范式别违反
数据库设计的步骤
需求分析阶段
准确了解与分析用户需求(包括数据与处理)。是整个设计过程的基础,是最困难、最耗费时间的一步。
概念结构设计阶段
是整个数据库设计的关键--设计数据库的E-R模型图,确认需求信息的正确和完整
Entity_Relationship---实体之间的关系
一对一
一对多
多对一
import orgapachecommons>
以上就是关于JAVA访问数据库的4种方法是哪些全部的内容,包括:JAVA访问数据库的4种方法是哪些、java修改文件中的记录、怎样用java代码动态生成数据库表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)