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了数据表。只有一条一条增加到后台数据表了。
-- 数据库用户名 UAGReport 表名student 已创建
use UAGReport
go
DECLARE @doc varchar(1000)
DECLARE @idoc int
SET @doc='<ROOT>
<student>
<id>6</id>
<name>sun</name>
<sex>male</sex>
<age>24</age>
</student>
</ROOT>'
exec sp_xml_preparedocument @idoc output,@doc
select from openxml(@idoc,'/ROOT/student',2)
with(id int,name varchar(40),sex varchar(20), age int)
insert student
select from openxml(@idoc,'/ROOT/student',2)
with student
exec sp_xml_removedocument @idoc
实现思路:可以通过w3c的dom解析器进行 *** 作,之后通过getName获取到xmltpye中的属性值。
举例:
import javaioFile;
import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNodeList;
public class DomTest1
{
public static void main(String[] args) throws Exception
{
// step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器)
DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();
// Systemoutprintln("class name: " + dbfgetClass()getName());
// step 2:获得具体的dom解析器
DocumentBuilder db = dbfnewDocumentBuilder();
// Systemoutprintln("class name: " + dbgetClass()getName());
// step3: 解析一个xml文档,获得Document对象(根结点)
Document document = dbparse(new File("candidatexml"));
NodeList list = documentgetElementsByTagName("PERSON");
for(int i = 0; i < listgetLength(); i++)
{
Element element = (Element)listitem(i);
String content = elementgetElementsByTagName("NAME")item(0)getFirstChild()getNodeValue();
Systemoutprintln("name:" + content);
Systemoutprintln("--------------------------------------");
}
}
}
以上就是关于如何将XML文件导入到数据库中去全部的内容,包括:如何将XML文件导入到数据库中去、SQL怎么提取字段中XML内容,并插入到 另外一张表、oracle数据库如何解析XML数据获取值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)