分享
 
 
 

如何使用ANT自动进行数据库的相关操作

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

如何使用ANT自动进行数据库的相关操作

赵才文(vipcowrie@sina.com)版权所有

如今的系统,无论是基于CS的还是基于BS的架构,如果与数据库打交道,那么程序员在开发系统的时候,或者在进行单元测试的时候,经常要对数据库进行一些重复的操作,例如初始化,建库,删除表格,插入测试数据等等。每次要做测试的时候,因为要求环境为最基本、最初始的环境,所以程序员必须手动的重复的执行某些sql语句,使得我们程序员的工作效率十分的低下。

ANT,是apache组织推出的基于java的构建工具,非常象C世界里面的MAKE工具,只要你写好构建程序的教本,就好比是戏剧的剧本一样,它会自动的按照你的要求去编译,运行、发布等等。

ANT的下载地址是:http://ant.apache.org

ANT基本上是由一个一个的TARGET(任务)构成的,你可以在一个Project内部建立N个TARGET,并且每个TARGET可以独立也可以依存于(depends)其他的任务,也就是说,只有其他的任务完成的时候,这个任务才有可能执行。

ANT里面有许多内置的task,这些task可以用来构建target,比如,你要完成一个编译的任务,那么你就可以引用这个task(javac),看上去象是java内部的命令,其实ant对他进行了封装。例如:

<javac srcdir="${src}"

destdir="${build}"

classpath="xyz.jar"

debug="on"

/>

这个任务将会编译src里面所有的源代码到目标文件夹build,使用的classpath是xyz.jar,并且是debug模式的。

ANT里面还有一个非常有用的task就是与数据库操作相关的一个task(sql),它的原理如下:

通过JDBC执行一系列的sql语句,语句可以从文本文件中读取,也可以通过包含的方式放在任务中。语句之间的间隔使用的是“;”或者自己定义的分割符号。注释的语句使用的是REM或者“――”。可以使用autocommit属性来控制语句是否真的被提交,还可以使用onerror属性来控制当执行的过程中遇到错误的时候应该怎么办?(abort,continue,stop)。

它有下列属性:

Attribute

Description

Required

driver

Class name of the jdbc driver

Yes

url

Database connection url

Yes

userid

Database user name

Yes

password

Database password

Yes

src

File containing SQL statements

Yes, unless statements enclosed within tags

encoding

The encoding of the files containing SQL statements

No - defaults to default JVM encoding

delimiter

String that separates SQL statements

No, default ";"

autocommit

Auto commit flag for database connection (default false)

No, default "false"

print

Print result sets from the statements (default false)

No, default "false"

showheaders

Print headers for result sets from the statements (default true)

No, default "true"

output

Output file for result sets (defaults to System.out)

No (print to System.out by default)

append

whether output should be appended to or overwrite an existing file. Defaults to false.

No

classpath

Classpath used to load driver

No (use system classpath)

classpathref

The classpath to use, given as a reference to a path defined elsewhere.

No (use system classpath)

onerror

Action to perform when statement fails: continue, stop, abort

No, default "abort"

rdbms

Execute task only if this rdbms

No (no restriction)

version

Execute task only if rdbms version match

No (no restriction)

caching

Should the task cache loaders and the driver?

No (default=true)

例子:

假如,我们有一个任务,就是每次程序运行的时候我们都要初始化整个数据库。要执行的sql语句如下:

drop table CHILD;

drop table TOY;

create table CHILD (id number,name varchar(200));

create table TOY(t_id number, c_id number,description varchar(200));

insert into child values(1,”tom”);

insert into toy values(1,1,”a baby”);

我们把上述语句存为一个文件叫ddl.sql,然后建立ant教本如下:

<project name=”test” basedir=”.”>

<target name=”dbinit”>

<echo message="create database schema...If error occurs,let it be" />

<sql

driver="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@localhost:test"

userid="test"

password="test"

classpathref="classes12.jar"

src="${ddl.sql}"

onerror="continue"

/>

</target>

</project>

这样,我们已经建立好了ant的教本,把它另外存储为build.xml,在命令行方式下面,运行下面的命令:

ant dbinit

结果如下:

dbinit:

[echo] create database schema...If error occurs,let it be

[sql] Executing file: D:\jbproject\test\db\ddl.sql

[sql] 6 of 6 SQL statements executed successfully

BUILD SUCCESSFUL

这样我们每次的工作就减少了很多了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有