當前位置:首頁 » 編程語言 » xml和sqlserver
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

xml和sqlserver

發布時間: 2022-09-14 14:06:29

㈠ 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");
//下面就是把這個數據集存到資料庫裡面
}

㈡ 如何將xml文件導入sqlserver

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

㈢ xml文檔轉換存儲到sql sever資料庫中

分無所謂,如果是你要的看著給吧。不知道你了解多少,我就盡量詳細點,羅嗦點。
表的設計完全是根據XML節點設計的,每一個節點信息都是表的一個欄位,每一個節點的屬性也要是一個表的欄位。
如果是用java寫首先需要導入幾個包
import java.sql.*; //估計一般的項目都是外包連接資料庫,所以用外包資料庫來講。
import java.io.*;
import javax.xml.parsers.*; //這個包是用來解析XML的
import org.w3c.dom.*; //工廠包
import org.apache.crimson.tree.*;//這個包是建立XML的包,也可以選擇不用,一般IDE不自帶,需要自己導入

//類也簡單寫一下吧
public class XmlToSql{
public static void main(string[] args){

//根據XML節點設計出的表欄位,我先假設有3個欄位
String id,username,password;
//建立資料庫連接,簡單方法連一下吧

Class.forName("com.microsoft.jabc.sqlserver.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename="資料庫名","登陸名","密碼");
//建立了連接後要用工廠去獲得Document,也就是你的XML
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//建立一個新工廠
DocumentBuilder builder=factory.newDocumentBuilder();//工廠建立一個builder來管理Doc
Document doc=builder.parse(new FileInputStrem(new File("*****.xml"));//把你的XML進行解析放入Document類型文檔。這時候你的XML文檔節點就以樹的形式放入內存了(說白了就是你表的欄位),下面你要什麼就調用就行了。

//開始正式解析文檔
NodeList nodes=doc.getElementsByTagName("a");//從英文也看的出這是把名為a的節點的信息放入NodeList容器中。NodeList就是存放節點組的容器
for(int i=0;i<nodes.getLength(),i++){ //開始循環把你的節點信息插入你的SQL表中,我只需要把你要的欄位提取出來就行了。我們不是前面假定了一個屬性ID,兩個元素節點嗎?這里就來取出
Element node=(Element)nodes.item(i); //先做個元素對象,畢竟我們要的欄位都是元素節點
id=node.getAttributes().getNamedItem("id").getNodeValue(); //用這個方法取出XML中 屬性ID的內容放入ID欄位中,這個ID就是你SQL里的ID名了,最後插入就可以了。注意這里是提取屬性的方法
username=node.getElementsBtagName("username").item(0).getFirstChild().getNode.Value();//提取元素節點username的值放入欄位,.item(0)就是第一個這個欄位,如果就有一個可以不要。
password=node.getElementsBtagName("password").item(0).getFirstChild().getNode.Value();//都是元素節點,所以同樣的方法取出password的值

//好了我們要的3個表值都取到了,並放入了變數中。現在一個SQL語句插入表就行了,其實我很怕在JAVA中寫SQL,不能格式化, .NET就方便的多。都寫到這里了就寫完吧

sql="insert into a values("+id+"','"+username+"'+'"password+"')";
con.createStatement().executeUpdate(sql);

}catch(Exception e{e.printStackTrace();}

}
}

//好了,你的XL信息循環插入表中了,其實XML結構很關鍵,這里是但節點循環,有時候出現多子節點,或者非正規體那就要根據XML的結構來循環輸入了,不過大體方法和思路都是一樣的。由於直接就在這里寫的代碼,沒在IDE中寫,所以括弧匹配方面也許會出小問題,見諒

㈣ 什麼是sqlserver

SQL Server是由Microsoft開發和推廣的關系資料庫管理系統(DBMS),那麼你對sqlserver了解多少呢?以下是由我整理關於什麼是sqlserver的內容,希望大家喜歡!

sqlserver的簡介

SQL Server是由Microsoft開發和推廣的關系資料庫管理系統(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發的,並於1988年推出了第一個OS/2版本。Microsoft SQL Server近年來不斷更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用戶見面;SQL Server 2000是Microsoft公司於2000年推出,目前最新版本是2015年份推出的SQL SERVER 2015。

sqlserver的特點

1.真正的客戶機/伺服器體系結構。

2.圖形化用戶界面,使系統管理和資料庫管理更加直觀、簡單。

3.豐富的編程介面工具,為用戶進行程序設計提供了更大的選擇餘地。

4.SQL Server與Windows NT完全集成,利用了NT的許多功能,如發送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產品集成。

5.具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平台使用。

6.對Web技術的支持,使用戶能夠很容易地將資料庫中的數據發布到Web頁面上。

7.SQL Server提供數據倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。

SQL Server 2000與以前版本相比較,又具有以下新特性 :

1.支持XML(Extensive Markup Language,擴展標記語言)

2.強大的基於Web的分析

3.支持OLE DB和多種查詢

4.支持分布式的分區視圖

sqlserver的配置要求

安裝、運行SQL Server 2000的硬體需求

1.計算機

Intel及其兼容計算機,Pentium 166Mz或者更高處理器或DEC Alpha和其兼容系統。

2.內存(RAM)

企業版最少64MB內存,其他版本最少需要32MB內存,建議使用更多的內存。

3.硬碟空間

完全安裝(Full)需要180MB的空間,典型安裝(Typical)需要170MB的空間,最小安裝(Minimum)需要65MB的空間。

Sqlserver的版本

SQL Server 2000 :是Microsoft 公司推出的SQL Server 資料庫管理系統,該版本繼承了SQL Server 7.0 版本的優點,同時又比它增加了許多更先進的功能。具有使用方便可伸縮性好與相關軟體集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的伺服器等多種平台使用。

SQL Server 2005 是一個全面的資料庫平台,使用集成的商業智能 (BI) 工具提供了企業級的數據管理。SQL Server 2005 資料庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用於業務的高可用和高性能的數據應用程序。

SQL Server 2005:SQL Server 2005 數據引擎是本企業數據管理解決方案的核心。此外 SQL Server 2005 結合了分析、報表、集成和通知功能。這使您的企業可以構建和部署經濟有效的 BI 解決方案,幫助您的團隊通過記分卡、Dashboard、Web services 和移動設備將數據應用推向業務的各個領域。

與 Microsoft Visual Studio、Microsoft Office System 以及新的開發工具包(包括 Business Intelligence Development Studio)的緊密集成使 SQL Server 2005 與眾不同。無論您是開發人員、資料庫管理員、信息工作者還是決策者,SQL Server 2005 都可以為您提供創新的解決方案,幫助您從數據中更多地獲益。

SQL Server 2008:SQL Server 2008是一個重大的產品版本,它推出了許多新的特性和關鍵的改進,使得它成為至今為止的最強大和最全面的SQL Server版本。這篇文章詳細介紹了Microsoft SQL Server 2008中的新的特性、優點和功能……

微軟的這個數據平台滿足這些數據爆炸和下一代數據驅動應用程序的需求,支持數據平台願景:關鍵任務企業數據平台、動態開發、關系數據和商業智能。

許多因素致使產生了信息存儲爆炸。有了新的信息類型,例如圖片和視頻的數字化,和從RFID標簽獲得的感測器信息,公司的數字信息的數量在急劇增長。遵守規范和全球化的發展要求信息存儲的安全性和在任何時候都可用。同時,磁碟存儲的成本顯著地降低了,使得公司投資的每一美元可以存儲更多的數據。用戶必須快速的在大量的數據中找到相關的信息。此外,他們想在任何設備上使用這個信息,並且計劃每天使用,例如Microsoft Office系統應用程序。對數據爆炸和用戶期望值的增加的管理為公司製造了許多挑戰。

㈤ 從ftp上下載每天的xml文件到本地,再解析本地的xml文件中的數據並將其存入sqlserver資料庫中

我給你個解析的代碼吧~具體存資料庫得根據實際情況來
#include "StdAfx.h"
#include "parse.h"
#include <string>
#include "stdafx.h"
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <iostream>
#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>

using namespace std;

parse::parse()
//int parse::parsexml()
{

xmlDocPtr doc; //定義解析文檔指針

xmlNodePtr curNode; //定義結點指針(你需要它為了在各個結點間移動)

xmlChar *szKey; //臨時字元串變數

char *szDocName;

doc = xmlReadFile("SimACQ_Config.xml","GB2312",XML_PARSE_RECOVER); //解析文件

//檢查解析文檔是否成功,如果不成功,libxml將指一個注冊的錯誤並停止。

if (NULL==doc)

{

fprintf(stderr,"Document not parsed successfully. /n");

/*return -1;*/

}

curNode = xmlDocGetRootElement(doc); //確定文檔根元素

/*檢查確認當前文檔中包含內容*/

if (NULL == curNode)

{

fprintf(stderr,"empty document/n");

xmlFreeDoc(doc);

/*return -1;*/

}

/*在這個例子中,我們需要確認文檔是正確的類型。「root」是在這個示例中使用文檔的根類型。*/

if (xmlStrcmp(curNode->name, BAD_CAST "SIMCONFIG"))

{

fprintf(stderr,"document of the wrong type, root node != mail");

xmlFreeDoc(doc);

/*return -1; */

}

curNode = curNode->xmlChildrenNode;

xmlNodePtr propNodePtr = curNode;

while(curNode != NULL)

{

//取出節點中的內容

if ((!xmlStrcmp(curNode->name, (const xmlChar *)"ComConfig")))
{

xmlNodePtr comConfigPtr= curNode->children;

while(comConfigPtr!=NULL)

{

if((!xmlStrcmp(comConfigPtr->name,(const xmlChar *)"DMS")))

{
xmlChar* szAttr = xmlGetProp(comConfigPtr,BAD_CAST "IP");

IP=(char*)szAttr;

szAttr=xmlGetProp(comConfigPtr,BAD_CAST "PORT");

PORT=atoi((const char *)szAttr);

szAttr=xmlGetProp(comConfigPtr,BAD_CAST "TIMEOUT");

TIMEOUT=atoi((const char *)szAttr);

xmlFree(szAttr);
}

comConfigPtr=comConfigPtr->next;
}
}

if ((!xmlStrcmp(curNode->name, (const xmlChar *)"Log")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Flag");

if(szAttr!=NULL)
{

if((!xmlStrcmp(szAttr,(const xmlChar *)"True")))

{
FLAG=true;
}
else
{
FLAG=false;
}
}

szAttr = xmlGetProp(curNode,BAD_CAST "Path");

if(szAttr!=NULL)
{
PATH=(char*)szAttr;
}

xmlFree(szAttr);

}

if ((!xmlStrcmp(curNode->name, (const xmlChar *)"DMS")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Cache");

if(szAttr!=NULL)
{

Cache=atoi((const char *)szAttr);
}
xmlFree(szAttr);
}

if ((!xmlStrcmp(curNode->name, (const xmlChar *)"SimFile")))
{
xmlChar* szAttr = xmlGetProp(curNode,BAD_CAST "Type");

if(szAttr!=NULL)
{
if((!xmlStrcmp(szAttr,(const xmlChar *)"PlainFilm")))
{

xmlNodePtr FileNodes=curNode->children;

int i=0;

while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes->name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");

if(szAttr!=NULL)
{
/*SIM_PLAIN[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_PLAIN[i].Name,(char*)szAttr);

}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");

if(szAttr!=NULL)
{
simulation.SIM_PLAIN[i].Num=atoi((char*)szAttr);

}

i++;

}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulation.SIM_PLAIN[i].flag=0;

}
if((!xmlStrcmp(szAttr,(const xmlChar *)"Spiral"))){

xmlNodePtr FileNodes=curNode->children;

int i=0;

while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes->name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");

if(szAttr!=NULL)
{
/*SIM_SPIRAL[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_SPIRAL[i].Name,(char*)szAttr);

}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");

if(szAttr!=NULL)
{
simulation.SIM_SPIRAL[i].Num=atoi((char*)szAttr);

}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulation.SIM_SPIRAL[i].flag=0;

}
if((!xmlStrcmp(szAttr,(const xmlChar *)"axial")))
{
xmlNodePtr FileNodes=curNode->children;

int i=0;

while(FileNodes!=NULL)
{
if((!xmlStrcmp(FileNodes->name,(const xmlChar *)"FILE")))
{
szAttr = xmlGetProp(FileNodes,BAD_CAST "name");

if(szAttr!=NULL)
{
/* SIM_AXIAL[i].Name=(char*)szAttr;*/
strcpy(simulation.SIM_AXIAL[i].Name,(char*)szAttr);

}
szAttr=xmlGetProp(FileNodes,BAD_CAST "sliceNum");

if(szAttr!=NULL)
{
simulation.SIM_AXIAL[i].Num=atoi((char*)szAttr);

}
i++;
}
FileNodes=FileNodes->next;
}
xmlFree(FileNodes);
simulation.SIM_AXIAL[i].flag=0;

}
}
xmlFree(szAttr);

}
curNode = curNode->next;

}

xmlFreeDoc(doc);
/*return 0;*/

}

有什麼不明白的再問吧!