同時向SQL資料庫插入多行資料

2021-04-02 11:33:43 字數 2321 閱讀 1281

sql server2000儲存過程只支援一次插入一條記錄。如果要插入多條記錄的話就得重複執行insert語句,但是利用sql server2000的xml支援卻可以實現一次向資料庫插入多條記錄。

程式**如下:

//建立表

datatable dt=new datatable();

sqlconnection sqlconnection=new sqlconnection("data source=localhost;

initial catalog=newtopicsystem;user id=sa;pwd=;packet size=4096");

sqlconnection.open();

sqlcommand sqlcommand=new sqlcommand();

sqlcommand.commandtype=commandtype.text;

sqlcommand.connection=sqlconnection;

sqlcommand.commandtext="select top 1 *

from newtopicsystem_admin";

sqldataadapter sqldataadapter=new sqldataadapter(sqlcommand);

//填充表的結構(如何能有效獲取表的結果?)

//設定表名並新增2個新行

dt.tablename="test";

datarow row_1=dt.newrow();

datarow row_2=dt.newrow();

object myobject_1=;

object myobject_2=;

row_2.itemarray=myobject_2;

row_1.itemarray=myobject_1;  

dt.rows.add(row_1);

dt.rows.add(row_2);

dataset ds=new dataset();

ds.tables.add(dt);

sqlcommand.dispose();

//獲取xml序列

string temp=ds.getxml();

sqlcommand.commandtype=commandtype.storedprocedure;

sqlparameter parm=new  sqlparameter

("@parm",sqldbtype.nvarchar,1000);

parm.value=temp;

sqlcommand.commandtext="storedprocedure_test";

sqlcommand.parameters.add(parm);

sqlcommand.executenonquery();

sqlconnection.close();

儲存過程:

alter procedure dbo.storedprocedure_test (

@parm nvarchar(1000) )

as

declare @idoc int

exec sp_xml_preparedocument @idoc output,@parm

insert newtopicsystem_admin(username,password,[power],description)(select *  from           

openxml(@idoc, '//test',2) with(username  varchar(10) 'username' , password varchar(20) 'pass

word',[power] varchar(20) 'power',description varchar(20) 'description'))

exec sp_xml_removedocument @idoc

return

系統儲存過程返回建立xml文件的內部表示法.關於openxml,在sql server2000聯機叢書中有如下定義:

openxml 通過 xml 文件提供行集檢視.由於openxml 是行集提供程式,因此可在會出現行集提供程式(如表、檢視或 openrowset函式)的 transact-sql 語句中使用 openxml.

其語法形式為openxml(xml文件的內部表示控制代碼,xpath表示式,行集之間的對映關係)。

行集之間的對映關係常用的取值為1,2.取1對映為屬性,取2表示對映為元素.在上面的**中對映的元素,因為程式生成的xml序列節點test只包含元素。

最後sp_xml_removedocument刪除以前建立的xml文件內部表示控制代碼。

java 向資料庫插入記錄

通過statement author administrator 介面statement 所有已知子介面 callablestatement,preparedstatement 一般使用這個 物件由connection.createstatement 建立 public class insert i...

MyBatis向資料庫中批量插入資料

foreach collection 指定要遍歷的集合 表示傳入過來的引數的資料型別。該引數為必選。要做 foreach 的物件,作為入參時,list 物件預設用 list 代替作為鍵,陣列物件有 array 代替作為鍵,map 物件沒有預設的鍵。當然在作為入參時可以使用 param keyname...

php向資料庫插入資料出現亂碼問題

一般插入到資料庫的資料亂碼都是編碼的問題,可以在插入資料庫前檢視下內容的編碼方式,如果和資料庫用的編碼方式 如 utf 8 一樣就執行插入操作,不一樣就進行轉碼。先判斷你要插入資料庫的文字的編碼方式,是utf 8就插入,不是的話要轉為utf 8之後再插入 先判斷你要插入資料庫的文字的編碼方式,是ut...

ADO 實現向Oracle資料庫中插入資料

ado 實現向oracle資料庫中插入資料 1 使用command物件完成插入。command 物件定義了將對資料來源執行的指定命令。該物件中常用的屬性和方法如下 activeconnection 屬性 該屬性指定 command 物件當前所屬的 connection 物件 commandtext ...

向Oracle資料庫中CLOB插入資料包錯問題

今天在專案中向資料庫的clob屬性插入一段篇文章 1000 2000 字就會報一個字串過長的錯誤。網上說用流來處理,沒有這麼做。這像是一個bug,只要把插入的資料,預設擴充到2000以上就ok了。下面是這段 if temp.length 1000 temp.length 2000 使用stringu...