xml与SQL
A. 在xml文件中插入sql语句
public class XMLTest
{
private Hashtable<String, String> hashtable;
private Vector sqlv=new Vector(); //用来存放Hashtable
public Hashtable getSQL(){
hashtable=new Hashtable<String, String>();
try{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
//path得到的值为 D:\tomcat5520\bin 即%tomcat%\bin目录
String path=System.getProperty("user.dir");
System.out.println("在XMLTest.java文件中打印user.dir的值为--"+path);
int pos=path.lastIndexOf("\\");
//下面这条语句得到的是 目录%tomcat%
path=path.substring(0,pos);
Document doc=db.parse(path+"/webapps/WebRoot/WEB-INF/sql-config.xml");
Element root=doc.getDocumentElement();
NodeList list=root.getElementsByTagName_r("sql-info");
for(int i=0;i<list.getLength();i++){
//得到第i个sql-info节点元素
Element name=(Element)list.item(i);
//在当前的sql-info节点中 取出所有的sql-name对应的节点
NodeList info=name.getElementsByTagName_r("sql-name");
//在当前当前的sql-info节点中 得到sql-name的多个节点,始终只取其中的第一个节点
Element nameelement=(Element)info.item(0);
//在当前当前的sql-info节点中 得到sql-name的多个节点,始终只取其中的第一个节点sql-name对应的文本的值
String namestr=nameelement.getFirstChild().getNodeValue();
//在当前的sql-info节点中 取出所有的sql-value对应的节点
NodeList sql=name.getElementsByTagName_r("sql-value");
//在当前当前的sql-info节点中 得到sql-value的多个节点,始终只取其中的第一个节点
Element sqlelement=(Element)sql.item(0);
//在当前当前的sql-info节点中 得到sql-value的多个节点,始终只取其中的第一个节点sql-value对应的文本的值
String sqlstr=sqlelement.getFirstChild().getNodeValue();
// System.out.println("sql语句为:"+sqlstr);
hashtable.put(namestr,sqlstr); //放入到Hashtable中
}
}catch(Exception e){
System.out.println("读取sql-config.xml "+e.getMessage());
}
return hashtable;
}
public void addHashtable(){
if(sqlv==null)
sqlv=new Vector();
Hashtable ht=getSQL(); //得到配置文件的Hashtable
sqlv.add(ht);
}
public Hashtable getHashtable(){
Hashtable ht=null;
if(sqlv==null)
sqlv=new Vector();
if(sqlv.isEmpty()){
addHashtable();
}
ht=(Hashtable)sqlv.get(0);
return ht;
}
public static void main(String[] args) throws Exception
{
XMLTest xt=new XMLTest();
Hashtable ht=xt.getSQL();
System.out.println(ht.get("在途"));
}
}
B. sql xml数据类型是什么意思
SQL2005数据库引擎引入了新的
xml
数据类型,这种数据类型支持在数据库中存储
XML
文档和片段。XML
实例可以存储在用
xml
类型创建的列、存储过程参数或变量中。
C. XML怎样才能连接和访问SQL数据库
可以做一个类库,用xml调用
using
System.Data.Sqlcolint;
using
System.Xml;
咨询通过读取xml文件连接sqlserver数据库的问题
悬赏分:20
-
提问时间2007-11-6
16:34
我的问题:
1。连接数据库方式是个类库(做成dll文件)
2。连接数据库的登录名密码等字符串是从config.xml中读取
3。是从类库中读取还是从别的地方读取config.xml?因为在类库中有个连接数据库的语句。
4。如果连接数据库的密码错误,会自动提示连接错误,然后弹出个小窗口,修改config.xml中的数据库密码等,然后保存。这个步骤在哪里写?
===================================================================================================================
我的部分代码:
1。连接数据库的类库:
Imports
System.data.sqlclient
Public
Class
DB
'sCon为连接字符串
Private
sCon
As
String
=
"User
ID=sa;Initial
Catalog=dbname;Data
Source=(local)
"
Public
Function
GetDataTable(ByVal
strSql
As
String)
As
DataTable
Dim
myDt
As
New
DataTable
Dim
sqlConn
As
SqlConnection
=
New
SqlConnection(sCon)
Dim
myCmd
As
SqlCommand
=
New
SqlCommand(strSql,
sqlConn)
Dim
myDa
As
New
SqlDataAdapter(strSql,
sqlConn)
Try
myDa.Fill(myDt)
Catch
er
As
Exception
Finally
sqlConn.Close()
End
Try
Return
myDt
End
Function
End
Class
public
Void
ReaderXML(string
URL)//URL是XML文件的路径
{
DataSet
ds
=
new
DataSet();
ds.ReaderXml("URL");
//下面就是把这个数据集存到数据库里面
}
D. xml在java与SQL的交互过程中起什么作用
用jdbc的话用不着xml(除非把用户名等信息存入xml中)就可以操作sql了,如果是java访问数据库要用到xml的话,那也就是hibernate了,那样的话,xml的作用就是把 类的属性和数据库中的字段对应起来,也就是告诉hibernate类的哪个属性对应着数据库中的哪个字段,当存入一个对象时,hibernate就回把对象的属性按照xml的对应信息分别存入数据库了
E. XML数据有什么特点SQL语言中是如何处理XML数据的,举几个例子
1)XML可以用于本地计算的数据。传递到桌面的数据可以进行本地计算。XML解析器可以读取数据,并将它递交给本地应用程序(例如浏览器)进一步查看或处理。数据也可以由使用XML对象模型的脚本或其它编程语言来处理。
2)可以为用户提供正确的结构化数据视图。传递到桌面的数据可以以多种方式表示。本地数据集,可以根据用户喜好和配置等因素,以适当的形式在视图中动态表现给用户。
3)允许集成不同来源的结构化数据。使用代理可在中间层服务器上集成来自后端数据库和其它应用程序的数据,使该数据能够传递给桌面或者其它服务器,做进一步处理。
4)描述来自多种应用程序的数据。由于 XML 是可扩展的,因此它可以用于描述来自多种应用程序的数据,即使没有数据的内置描述,也能够接收和处理数据。
5)通过粒度更新来提高性能。XML 允许粒度更新。开发人员不必在每次改动时都发送整个结构化数据集。有了粒度更新后,只有改变的元素才从服务器发送到客户机。
F. xml文件如何写入sql数据库
sqlserver2005分解并导入xml文件[@more@]
1.
一次性导入:
declare
@idoc
int;
declare
@doc
xml;
select
@doc=bulkcolumn
from
openrowset(bulk
n'e:mstarinstrycodes.xml',
single_blob)
as
x
exec
sp_xml_preparedocument
@idoc
output,
@doc
select
*
into
tmp_tab
from
openxml
(@idoc,
'/root/record'/',2)
with
(
instrycode
varchar(10)
,instryglobalid
varchar(10)
,instryname
varchar(100)
,sectorcode
varchar(10)
,sectorglobalid
varchar(10)
,sectorname
varchar(100)
,supersectorcode
varchar(10)
,supersectorname
varchar(100)
,groupcode
varchar(10)
,groupname
varchar(100)
,countryid
varchar(3)
)
exec
sp_xml_removedocument
@idoc
select
*
from
tmp_tab
2.
先导入到表中varchar(max)列,然后再用openxml解析,读出。
--
使用single_clob参数,tmp_raw中字段为varcahr(max)类型
select
*
into
tmp_raw
from
openrowset(bulk
n'e:mstarinstrycodes.xml',
single_clob)
as
x
declare
@idoc
int;
declare
@doc
xml;
select
@doc
=
bulkcolumn
from
tmp_raw
exec
sp_xml_preparedocument
@idoc
output,
@doc
select
top
10
*
from
openxml
(@idoc,
'/root/record',
1)
with
(
instrycode
varchar(10)
,instryglobalid
varchar(10)
,instryname
varchar(100)
,sectorcode
varchar(10)
,sectorglobalid
varchar(10)
,sectorname
varchar(100)
,supersectorcode
varchar(10)
,supersectorname
varchar(100)
,groupcode
varchar(10)
,groupname
varchar(100)
,countryid
varchar(3)
)
exec
sp_xml_removedocument
@idoc
G. 数据库里的sql2008、xml、access有什么区别
sql2008应该指的是SqlServer2008,现在是最新的SqlServer2012。是微软主打的数据库管理系统。是用于Window上的数据库。
Xml指是可扩展标记语言。是文本内容,一般可以用来存储数据,或用于配置文件。数据处理功能较弱,但通用性比强,各平台都对它有支持。
Access,是Office中的一员,也是可以管理数据的,但是这属于个人版本,不能支持网络的多用户。
H. xml与sql的区别
xml是为了各种平台间共享数据的标准语言,通过标签节点来组织数据,具有平台无关,且结构好理解;
sql是用来在数据库中进行查、删、改、更新的语句,专门为数据库设计的,且每种数据库的sql语句有一些区别。
I. sql语句写在XML里面是一种框架吗
不算框架.
在这种场合XML属于配置文件.
但是,SQL属于敏感语句,一般不会在明文中指定,比如XML,INI等等配置文件中.
除非是一次性使用,在配置文件中存放安装应用时所需的SQL脚本.用完后,该配置文件会由程序直接将其进行物理删除.
J. xml文件导入sql数据库
SQLServer2005分解并导入xml文件[@more@]
1. 一次性导入:
DECLARE @idoc int;
DECLARE @doc xml;
SELECT @doc=BulkColumn FROM OPENROWSET(BULK N'E:MStarInstryCodes.xml', SINGLE_BLOB) AS x
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT * into tmp_tab FROM OPENXML (@idoc, '/Root/Record'/',2)
WITH
(
InstryCode varchar(10)
,InstryGlobalId varchar(10)
,InstryName varchar(100)
,SectorCode varchar(10)
,SectorGlobalId varchar(10)
,SectorName varchar(100)
,SuperSectorCode varchar(10)
,SuperSectorName varchar(100)
,GroupCode varchar(10)
,GroupName varchar(100)
,CountryId varchar(3)
)
EXEC sp_xml_removedocument @idoc
select * from tmp_tab
2. 先导入到表中varchar(MAX)列,然后再用OPENXML解析,读出。
-- 使用SINGLE_CLOB参数,tmp_raw中字段为varcahr(MAX)类型
SELECT * into tmp_raw FROM OPENROWSET(BULK N'E:MStarInstryCodes.xml', SINGLE_CLOB) AS x
DECLARE @idoc int;
DECLARE @doc xml;
select @doc = BulkColumn from tmp_raw
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT top 10 * FROM OPENXML (@idoc, '/Root/Record', 1)
WITH
(
InstryCode varchar(10)
,InstryGlobalId varchar(10)
,InstryName varchar(100)
,SectorCode varchar(10)
,SectorGlobalId varchar(10)
,SectorName varchar(100)
,SuperSectorCode varchar(10)
,SuperSectorName varchar(100)
,GroupCode varchar(10)
,GroupName varchar(100)
,CountryId varchar(3)
)
EXEC sp_xml_removedocument @idoc