專利名稱:一種批量添加數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通過將對象序列化為XML調(diào)用存儲過程批量添加數(shù)據(jù)的方法,特 別涉及一種通過序列化對象調(diào)用一次存儲過程實現(xiàn)批量添加數(shù)據(jù)的方法。
背景技術(shù):
目前通過調(diào)用SQLServer的存儲過程添加數(shù)據(jù)的方法主要有以下一種1、通過SQLServer的添加語句直接添加數(shù)據(jù)。這種方法實現(xiàn)簡單,只通過一條SQL語句將需要添加的對象添加到數(shù)據(jù)庫中。當(dāng) 需要將對象添加到數(shù)據(jù)庫中時,調(diào)用存儲過程添加數(shù)據(jù),完成添加后返回成功添加或失敗 添加的結(jié)果。當(dāng)需要添加到數(shù)據(jù)庫中的對象數(shù)量是已知的情況下,這種方法可以滿足要求。 但添加到數(shù)據(jù)庫中的對象數(shù)量不是已知的情況下,就要先確定對象的數(shù)量,然后再循環(huán)的 調(diào)用存儲過程添加數(shù)據(jù)對象。頻繁的調(diào)用存儲過程勢必會增加應(yīng)用程序與數(shù)據(jù)庫通信交換 信息的次數(shù),這樣會影響系統(tǒng)處理信息的能力,降低系統(tǒng)性能。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是通過序列化泛型集合對象為XML,結(jié)合SQLServer 數(shù)據(jù)庫游標(biāo)技術(shù),將數(shù)據(jù)對象批量添加到數(shù)據(jù)庫中。在未知對象數(shù)量的情況下,一次與數(shù)據(jù) 庫進行通信調(diào)用數(shù)據(jù)庫中自定義的存儲過程,完成批量數(shù)據(jù)的添加。從而減少與數(shù)據(jù)庫進 行通信的次數(shù),提高系統(tǒng)整體性能。本發(fā)明所述的一種通過序列化對象批量添加數(shù)據(jù)的方法,該方法至少包括如下的 步驟步驟1 新建一個可以序列化為XML對象的類型并命名為“類1”,該類型擁有需要 添加到數(shù)據(jù)庫中對應(yīng)字段的屬性。步驟2 新建一個“類1”類型的泛型集合并命名為“集合1”。步驟3 將需要添加到數(shù)據(jù)庫中的未知數(shù)量的“類1”類型的對象循環(huán)添加到“集合 1”中。步驟4:序列化“集合1”類型的對象為XML類型的數(shù)據(jù)格式的字符串。步驟5 新建一個數(shù)據(jù)庫存儲過程,該存儲過程可以通過游標(biāo)迭代數(shù)據(jù)。步驟6 將序列化的XML字符串作為參數(shù)傳遞給存儲過程。步驟7 通過游標(biāo)順序迭代XML類型的字符串,將需要添加的數(shù)據(jù)順序添加到數(shù)據(jù) 庫中。步驟8 添加成功或失敗,返回結(jié)果。本發(fā)明涉及的一種通過序列化對象批量添加數(shù)據(jù)的方法,該方法的實施減少了項 目中應(yīng)用邏輯與數(shù)據(jù)庫往返交換數(shù)據(jù)的通信次數(shù),提高了系統(tǒng)整體性能。
具體實施例方式本發(fā)明的主要步驟如下步驟1 新建一個可以序列化的類型,命名為“類型1”。該類型的對象擁有可序列 化的公共屬性并且對象的屬性值即是要添加到數(shù)據(jù)庫中的字段值。步驟2 新建一個“類型1”類型的泛型集合1,將需要添加到數(shù)據(jù)庫中的未知數(shù)量 的“類型1”對象添加到集合中。步驟3 序列化泛型集合1對象為XML格式的字符串。步驟4 新建一個數(shù)據(jù)庫存儲過程。該存儲過程可以接收一個字符串作為參數(shù),同 時這個存儲過程也擁有游標(biāo)及微軟XML分析器的應(yīng)用。步驟5 調(diào)用存儲過程,將序列化的字符串作為參數(shù)傳遞給存儲過程。步驟6 利用微軟的XML分析器將存儲過程中的參數(shù)為XML類型的字符串進行解 析,將游標(biāo)指向解析后的XML字符串中的第一個元素。步驟7 取出該元素的值,并將值賦給存儲過程中相應(yīng)的自定義變量。步驟8 通過SQL的添加語句將自定義變量添加到數(shù)據(jù)庫對應(yīng)的字段中。步驟9 通過游標(biāo)順序的迭代XML字符串中的下一元素,重復(fù)步驟7。步驟10 迭代結(jié)束,返回結(jié)果(成功或失敗)。上述步驟4新建一個數(shù)據(jù)庫存儲過程,該存儲過程具有游標(biāo)及解析XML字符串的 功能的具體步驟如下步驟41 在新建的存儲過程中調(diào)用系統(tǒng)存儲過程完成XML的解析工作。該系統(tǒng)存 儲過程擁有讀取作為輸入提供的XML文本,然后使用MSXML分析器(Msxmlsql.dll)對其進 行分析,并提供分析后的文檔供使用。分析后的文檔對應(yīng)XML文檔中的各節(jié)點(元素、屬性、 文本和注釋等)的樹狀表示形式。步驟42 通過游標(biāo)順序的迭代出分析后的文檔中的每個元素的值。上述的技術(shù)方案實施時通過序列化對象批量添加數(shù)據(jù),該方法減少了項目中應(yīng)用 邏輯與數(shù)據(jù)庫往返交換數(shù)據(jù)的通信次數(shù),提高了系統(tǒng)整體性能。最后所應(yīng)說明的是,以上實施例僅用以說明而并非限制本發(fā)明所描述的技術(shù)方 案;因此,盡管本說明書參照上述的實施例對本發(fā)明已進行了詳細(xì)的說明,但是,本領(lǐng)域的 普通技術(shù)人員應(yīng)當(dāng)理解,仍然可以對本發(fā)明進行修改或者等同地替換;而一切不脫離本發(fā) 明的精神和范圍的技術(shù)方案及其改進,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
一種批量添加數(shù)據(jù)的方法,其特征在于該方法至少包括如下的步驟步驟1新建一個可以序列化為XML對象的類型并命名為“類1”,該類型擁有需要添加到數(shù)據(jù)庫中對應(yīng)字段的屬性。步驟2新建一個“類1”類型的泛型集合并命名為“集合1”。步驟3將需要添加到數(shù)據(jù)庫中的未知數(shù)量的“類1”類型的對象循環(huán)添加到“集合1”中。步驟4序列化“集合1”類型的對象為XML類型的數(shù)據(jù)格式的字符串。步驟5新建一個數(shù)據(jù)庫存儲過程,該存儲過程可以通過游標(biāo)迭代數(shù)據(jù)。步驟6將序列化的XML字符串作為參數(shù)傳遞給存儲過程。步驟7通過游標(biāo)順序迭代XML類型的字符串,將需要添加的數(shù)據(jù)順序添加到數(shù)據(jù)庫中。步驟8添加成功或失敗,返回結(jié)果。
全文摘要
一種批量添加數(shù)據(jù)的方法,首先新建一個可以序列化為XML對象的類型并命名為“類1”,該類型擁有需要添加到數(shù)據(jù)庫中對應(yīng)字段的屬性;新建一個“類1”類型的泛型集合并命名為“集合1”;然后將需要添加到數(shù)據(jù)庫中的未知數(shù)量的“類1”類型的對象循環(huán)添加到“集合1”中;序列化“集合1”類型的對象為XML類型的數(shù)據(jù)格式的字符串;新建一個數(shù)據(jù)庫存儲過程,該存儲過程可以通過游標(biāo)迭代數(shù)據(jù);將序列化的XML字符串作為參數(shù)傳遞給存儲過程;通過游標(biāo)順序迭代XML類型的字符串,將需要添加的數(shù)據(jù)順序添加到數(shù)據(jù)庫中;添加成功或失敗,返回結(jié)果。本發(fā)明減少了項目中應(yīng)用邏輯與數(shù)據(jù)庫往返交換數(shù)據(jù)的通信次數(shù),提高了系統(tǒng)整體性能。
文檔編號G06F17/30GK101894111SQ20091008418
公開日2010年11月24日 申請日期2009年5月20日 優(yōu)先權(quán)日2009年5月20日
發(fā)明者劉立軍, 張守文, 王磊, 陶勇勝 申請人:灰熊(北京)科技有限公司