利用SqlDataAdapter複製資料行

2021-08-24 22:30:16 字數 1227 閱讀 2004

專案中需要實現乙個資料行的複製功能,也就是有些資料資訊,大部分內容都是一樣的,只有少數幾個引數不同,實現這個功能以簡化使用者的輸入。

按理說,這種功能實現起來非常簡單,但是這裡有個問題,表的字段非常多,超過100,以前,都是習慣於手寫sql,這時麻煩就來了,sql還真長,雖然可以利用工具生成,但引數的設定還得手工調整,總之欄位太多,看著頭就暈。

這時,我想到了sqlcommandbuilder。「sqldataadapter不會自動實現生成dataset的更改與關聯的sql server例項之間的協調所需的sql語句。但是,如果設定了sqldataadapter的selectcommand屬性,則可以建立乙個sqlcommandbuilder物件來自動生成用於單錶更新的t-sql語句。」

根據msdn的示例,我得到下面的一段**:

static private dataset createcommandandupdate( string connectionstring, string querystring) // code to modify data in the dataset here. //without the oledbcommandbuilder this line would fail. dataadapter.update(dataset); } return dataset; }

在注釋「1」處,建立了乙個sqlcommandbuilder物件。

在注釋「2」處,利用importrow方法,在dataset中匯入一條新記錄,然後需要做一下acceptchanges(),接收這個變化。

在注釋「3」處,對新新增的這條記錄應用setadded()方法,改變其狀態為added,這時就可以根據需要改變某字段的值了。

最後利用sqldataadapter的update方法,就能將資料更新到資料庫了。

【附】datarowstate列舉成員

added

該行已新增到 datarowcollection 中,acceptchanges 尚未呼叫。

deleted

該行已通過 datarow 的 delete 方法被刪除。

detached

該行已被建立,但不屬於任何 datarowcollection。datarow 在以下情況下立即處於此狀態:建立之後新增到集合中之前;或從集合中移除之後。

modified

該行已被修改,acceptchanges 尚未呼叫。

unchanged該行自上次呼叫 acceptchanges 以來尚未更改。

mysql 利用 mysql利用

mysql 寫入webshell復現 1.直接寫入 windows成功率較高 1.檢視是否允許可寫 空可寫,null不行,5.5以前預設為空,5.5以後預設為null 2.寫入檔案 2.日誌檔案寫入shell 5.0以後會建立日誌檔案 資料庫許可權 1.檢視是否開啟日誌 2.開啟日誌 3.設定路徑 ...

利用AlwaysInstallElevated提權

2.啟用alwaysinstallelevated 3.提權 4.防禦方式 5.參考文章 alwaysinstallelevated是登錄檔的乙個鍵值,當其值為1的時候,普通使用者即可以system許可權安裝msi程式。certutil.exe urlcache split f開啟powershel...

鉤子的利用

在 ae 開發中,可以利用鉤子把 mapcontrol 給傳到由 itool 或者icommond 繼承的命令或者工具裡,傳進去的鉤子就是 hook 型別是乙個 object 實際上就是乙個 mapcontrol 可以用強制轉換為 mapcontrol icommand gtcstandard if...