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