var tmpquery2:tadoquery;
tmpfile:string;
tmptable:tadotable;
begin
if applicationMessageBox( '导入答案将会清空以前的考生答案,确定是否继续? ', '提醒 ',MB_OKCANCEL or MB_ICONWARNING)=mrok then
begin
IF BSopenExecute then
try
try
begin
tmpfile:=bsopenFileName;
tmptable:=tadotableCreate(self);
tmpquery2:=tadoqueryCreate (self);
tmpquery2Connection :=dmconnect ;
tmptableConnection :=dmconnect ;
tmptableTableName:= 'exam_answer ';
with tmpquery2 do
begin
close;
sqlClear;
sqlAdd( 'delete from exam_answer ');
execsql;
end;
tmptableLoadFromFile(tmpfile);
tmptableFirst;
while not tmptableEof do
begin
with tmpquery2 do
begin
close;
sqlClear;
sqlAdd( 'insert into exam_answer(kh,xm,sj_id,sjts,tk_id,stbh,tx,daa,dab,dac,dad,dae,daf,tkda,df) values(:kh,:xm,:sj_id,:sjts,:tk_id,:stbh,:tx,:daa,:dab,:dac,:dad,:dae,:daf,:tkda,:df) ');
parametersParamByName( 'kh ')Value :=tmptablefieldbyname( 'kh ')AsString;
parametersParamByName( 'xm ')Value :=tmptablefieldbyname( 'xm ')AsString;
parametersParamByName( 'sj_id ')Value :=tmptablefieldbyname( 'sj_id ')AsString;
parametersParamByName( 'tx ')Value :=tmptablefieldbyname( 'tx ')AsString;
parametersParamByName( 'sjts ')Value :=tmptablefieldbyname( 'sjts ')AsString;
parametersParamByName( 'tk_id ')Value :=tmptablefieldbyname( 'tk_id ')AsString;
parametersParamByName( 'stbh ')Value :=tmptablefieldbyname( 'stbh ')AsString;
parametersParamByName( 'daa ')Value :=tmptablefieldbyname( 'daa ')AsBoolean;
parametersParamByName( 'dab ')Value :=tmptablefieldbyname( 'dab ')asboolean;
parametersParamByName( 'dac ')Value :=tmptablefieldbyname( 'dac ')AsBoolean ;
parametersParamByName( 'dad ')Value :=tmptablefieldbyname( 'dad ')AsBoolean ;
parametersParamByName( 'dae ')Value :=tmptablefieldbyname( 'dae ')AsBoolean ;
parametersParamByName( 'daf ')Value :=tmptablefieldbyname( 'daf ')AsBoolean ;
parametersParamByName( 'tkda ')Value :=tmptablefieldbyname( 'tkda ')AsString;
parametersParamByName( 'df ')Value :=tmptablefieldbyname( 'df ')AsString;
execsql;
end;
tmptablenext;
end;
showmessage( '导入完成,累死了 ')
end;
finally
tmptableFree;
tmpquery2Free;
end;
except
showmessage( '导入未完成。:( ')
end;
end;
end;
如果单纯的LOAD出来,它是不直接写到后台数据表的。分析下源码就知道它LOAD之前先CLOSE了数据表。只有一条一条增加到后台数据表了。
你是使用JNDI获得数据源对象的吗?如果是:
1,、配置contextxml文件
<Context>
<Resource name="jdbc/news"
auth="Container"
type="javaxsqlDataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="jbit"
password="dbqn"'
driverClassName="OraclejdbcdriverOracleDriver"
url="jdbc:oracle:thin:@localhost:1521:daataName"
</Context>
以上用的是Oracle数据库的驱动和url
你可以换成SQL的
2、配置webxml文件
<resource-ref>
<res-auth>Container</res-auth>
<res-type>javaxsqlDataSource</res-type>
<res-ref-name>jdbc/news</res-ref-name>
</resource-ref>
3、添加数据库驱动
4、在javaBean中编写代码,使用lookup()方法获得数据源对象
public class BaseDAO {
private static Connection conn = null;
public static Connection getConnection() {
try {
Context context = new InitialContext();
DataSource ds = (DataSource) context
lookup("java:comp/env/jdbc/news");
conn = dsgetConnection();
} catch (Exception e) {
eprintStackTrace();
}
return conn;
}
}
注:lookup("java:comp/env/jdbc/news");
中的参数"java:comp/env/"+数据源名称的形式
如果你要的话我正好有这Struts2的项目我可以给你看看
查询 *** 作
在定义了一个XML类型的数据之后,我们最常用的就是查询 *** 作,下面我们来介绍如何使用SQL语句来进行查询 *** 作的。
在T-Sql中,提供了两个对XML类型数据进行查询的函数,分别是query(xquery)和value(xquery,
dataType),其中,query(xquery)得到的是带有标签的数据,而value(xquery,
dataType)得到的则是标签的内容。接下类我们分别使用这两个函数来进行查询。
1
、使用query(xquery)
查询
我们需要得到书的标题(title),使用query(xquery)来进行查询,查询语句为:
select
@xmlDocquery('/book/title')
2
、使用value(xquery,
dataType)
查询
同样是得到书的标题,使用value函数,需要指明两个参数,一个为xquery,
另一个为得到数据的类型。看下面的查询语句:
select
@xmlDocvalue('(/book/title)[1]',
'nvarchar(max)')
3
、查询属性值
无论是使用query还是value,都可以很容易的得到一个节点的某个属性值,例如,我们很希望得到book节点的id,我们这里使用value方法进行查询,语句为:
select
@xmlDocvalue('(/book/@id)[1]',
'nvarchar(max)')
4
、使用xpath进行查询
xpath是统一的Xml查询语句。使用XPath可以方便的得到想要的节点,而不用使用where语句。例如,我们在@xmlDoc中添加了另外一个节点
例如
:得到id为0002的book节点
select
@xmlDocquery('(/root/book[@id="0002"])')
参考资料:
>
开始讨论XML和数据库之前,我们先回答许多人都遇到过的问题:“XML是数据库吗?”
如果仅按数据库这个术语的本质来看,XML文件就是数据库,它是数据的集合。在许多方面看起来它和其他文件没什么区别 -- 无论如何,每个文件都含有某种类型的数据。作为一种“数据库”格式,XML有一些优势:例如,它是自描述的(所用的标记描述了数据的结构和类型,尽管缺乏语义),可交换的(portable)(Unicode),能够以树型或图形结构描述数据。同样它也有缺点,例如,它显得有些繁琐,由于要对它进行解析和文本转换,所以数据访问速度较慢。
一个更有用的问题就是在较为宽松的意义上,XML及其周边技术是否可以算作“数据库” -- 数据库管理系统(DBMS)。答案是“在某种程度上是(sort of)”。从正面来说,XML提供了许多数据库所具备的东西:存储(XML文档), 模式(DTD, XML schema,RElAX NG 等等), 查询语言(XQuery, XPath, XQL, XML-QL, QUILT等等),编程接口(SAX, DOM,JDOM)等等。从反面来说,它缺少一些作为实用的数据库所应具备的特性:高效的存储,索引,安全,事务和数据一致性,多用户访问,触发器,在查询多个文件等等。
因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但是却不适用于用户量大、数据集成度高以及性能要求高的作业环境。
XML适合于用作所谓“数据库”的一个好例子就是 ini文件 -- 它包含应用程序的配置信息。与其写一个处理以逗号分隔(comma-delimited)的文件的解析器,开发一种小型的XML语言并写一个解释它的 SAX程序要容易的多。此外,XML允许使用嵌套的实体,而逗号分隔的文件(comma-delimited files)很难做到这点。然而,说它就是数据库还很勉强,因为它是线性读写的,而且仅用在程序开始和结束时。
比较适合于XML数据库的一些复杂的数据集就是个人通讯录(名字,电话号码,地址等),或用于描述浏览器书签以及用Napster偷来的MP3。然而,由于dBase和Access之类的数据库物美价廉,即使在这种情况下似乎也没有多少理由把XML文件作为数据库使用。XML的唯一真正好处就是数据的可交换性(portable),由于有越来越多的工具可以用来对数据库进行XML序列化(serializing),这一点好处似乎也要打些折扣。
以上就是关于如何将XML文件导入到数据库中去全部的内容,包括:如何将XML文件导入到数据库中去、如何java类中如何取得在xml文件查询数据库的结果、sql 2005数据库 如何 *** 作xml等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)