用 DataSet 對象更新數據

這個是我新做的一個小站,宗旨爲“beginner to beginner”,因爲我也是初學者:) 裏面的“心得體會” 都是我自己寫的。

大家知道,DataSet保存的數據是位于服務器內存裏面的原數據庫的“副本”。所以用DataSet更新數據的過程就是先對“副本”進行更新,然後在將“原本”更新,按照我的理解就是把“原本”覆蓋掉。具體到過程,首先是要找到需要更新的行,然後賦新值,最後更新原數據庫。

要找到需要修改的行,比較方便的做法就是根據記錄中的某個值進行查找,這樣比用“列號”“行號”什麽的方便多了。要做到這一點,首先就是要給數據庫指定一個主鍵,然後即可按照主鍵進行查找。要注重的是這個主鍵必須要是在程序中指定的,並且這個主鍵不一定和你數據庫原來有的主鍵一樣。

然後就是最後的更新,當然是用DataAdapter的Update()方法借助CommandBuilder來實現,要注重的是,假如你的數據庫一開始沒有定義主鍵,那進行更新的時候會出錯,返回的錯誤將是“對于不返回任何鍵列信息的 SelectCommand 不支持 UpdateCommand 的動態 SQL 生成。”這是因爲我們用的Update()實際上是通過CommandBuilder動態生成sql語句,然後才進行的數據庫操作。但假如你在一開始創建DataAdapter時的那個sql語句沒有包含有主鍵的列的話,那CommandBuilder將不會發生作用。這一點是必須要牢記的。

說了這麽多,假如有不明白的就看下面的程序,這個是我練習時寫的,裏面有一些個人的設定,比如記錄名什麽的,相信大家一看就明白。代碼拷貝框

<%@import namespace="System.Data"%>

<%@import namespace="System.Data.OleDb"%>

<script language="c#" runat="server">

//定義處理更新的方法

//因爲是簡單示例,所以這個程序已經簡化,直接進行更新

//這裏有兩個參數,第一個用來查找需要更新的行,第二個是要修改的值

private void up_date(int ids,string names){

//連接字符串,不明白的可以看本專題第二篇文章

string connstr=ConfigurationSettings.AppSettings["color"];

OleDbConnection conn=new OleDbConnection(connstr);

string sql="select * from member";

OleDbDataAdapter ada=new OleDbDataAdapter(sql,conn);//建立一個DataAdapter對象

//這裏的CommandBuilder對象一定不要忘了,一般就是寫在DataAdapter定義的後面

OleDbCommandBuilder cb=new OleDbCommandBuilder(ada);

DataSet ds=new DataSet();//建立DataSet對象

conn.Open();//打開連接

ada.Fill(ds,"mems");//填充DataSet

conn.Close();//注重及時關閉連接

DataTable dt=ds.Tables["mems"];//建立一個DataTable對象,方便操作

dt.PrimaryKey=new DataColumn[]{dt.Columns["id"]};//建立一個主鍵

DataRow dr=dt.Rows.Find(ids);//根據參數查找到需要修改的行

dr["name"]=names;//對需要修改的記錄賦新值

ada.Update(ds,"mems");//用DataAdapter的Update()方法進行數據庫的更新

}

//定義用來響應按鈕單擊事件的方法

private void b1_Click(object sender,System.EventArgs e){

if(Page.IsValid){

int ids=Int32.Parse(idst.Text);//取得要修改的行的id值,並轉換成int類型

string names=namest.Text;//取得新值

up_date(ids,names);//調用我們定義的方法處理

lb1.Text="ok!";

</script>

<Html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>用dataset更新記錄</title>

</head>

<body>

<ASP:Label id="lb1" runat="server"/>

<form runat="server">

<asp:TextBox id="idst" runat="server"/>

<asp:RequiredFieldValidator id="rfv1" ControlToValidate="idst" ErrorMessage="error!" runat="server"/>

<asp:TextBox id="namest" runat="server"/>

<asp:RequiredFieldValidator id="rfv2" ControlToValidate="namest" ErrorMessage="error!" runat="server"/>

<asp:Button id="b1" Text="here!!" OnClick="b1_Click" runat="server"/>

</form>

</body>

</html>

[Ctrl+A 全部選擇 然後拷貝]

Object/DataSet Relational Mapping(對象/數據集關系映射)
在.Net的開發領域,您和您的公司是不是在爲以下問題所困擾1.DataSet中DataRow只能以DataTable.Rows[“Name”]的方式獲取數據2.Sql配置的不動態,不清晰的Sql拼湊3.使用JAVA 的ORM設計.Net,使用對象層,每一次修改都...查看完整版>>Object/DataSet Relational Mapping(對象/數據集關系映射)
 
[ASP.net(C#)]用DataSet進入對數據源的插入數據、更新數據及刪除數據
在ASP中用的最多的就是RecordSet了。RecordSet很容易的實現對數據源的記錄插入、更新、刪除等操作。而在.net中,已經沒有了RecordSet這個概念了。但.net中的DataSet+DataAdapter也可以實現像RecordSet一樣的記錄插入...查看完整版>>[ASP.net(C#)]用DataSet進入對數據源的插入數據、更新數據及刪除數據
 
使用 DataAdapter 和 DataSet 更新數據庫
DbDataAdapter調用 Update 方法時,DataAdapter 將分析已作出的更改並執行相應的命令(INSERT、UPDATE 或 DELETE)。當 DataAdapter 遇到對 DataRow 的更改時,它將使用 InsertCommand、UpdateCommand 或 DeleteComm...查看完整版>>使用 DataAdapter 和 DataSet 更新數據庫
 
簡單實用的DataSet更新數據庫的類+總結(c#)
  以前經常用sql語句(update)更新數據庫,有使用用起來不是很方便,特別是數據量比較大的情況下(比如數據表)很麻煩~~後來感覺用DataSet更新數據庫是不錯的選擇.于是急著寫了一個用ataSet更新數據庫的類  如下...查看完整版>>簡單實用的DataSet更新數據庫的類+總結(c#)
 
簡單實用的DataSet更新數據庫的類+總結(c#)
以前經常用sql語句(update)更新數據庫,有使用用起來不是很方便,特別是數據量比較大的情況下(比如數據表)很麻煩~~後來感覺用DataSet更新數據庫是不錯的選擇.于是急著寫了一個用ataSet更新數據庫的類如下:(後面...查看完整版>>簡單實用的DataSet更新數據庫的類+總結(c#)
 
使用 DataAdapter 和 DataSet 更新數據庫
DbDataAdapter調用 Update 方法時,DataAdapter 將分析已作出的更改並執行相應的命令(INSERT、UPDATE 或 DELETE)。當 DataAdapter 遇到對 DataRow 的更改時,它將使用 InsertCommand、UpdateCommand 或 DeleteComm...查看完整版>>使用 DataAdapter 和 DataSet 更新數據庫
 
使用 Visual C# .NET 從數據集對象更新數據庫
本文的發布號曾爲 CHS307587 有關本文的 Microsoft Visual Basic .NET 版本,請參見 。 本任務的內容 概要數據集對象是 Microsoft .NET 框架中數據訪問的關鍵部分,是可保存表、視圖和關系的內存中對象。本文介紹了...查看完整版>>使用 Visual C# .NET 從數據集對象更新數據庫
 
ASP.NET:ADO.NET的DataSet數據模型
  DataSet對象是ADO.NET的核心,基于DataSet的數據模型才使得ADO.NET實現離線式數據操作模型。DataSet是存在于內存中的數據庫,是專門用來處理數據保存體中讀出的數據。它的優點就是離線式的,一點讀取到數據源中的...查看完整版>>ASP.NET:ADO.NET的DataSet數據模型
 
使用OleDbCommand對象更新SQL Server中的二進制文件
使用OleDbCommand對象更新SQL Server中的二進制文件 作者 朱二 利用ADO.NET中的OleDbConnection\OleDbCommand 可以方便的對SQL Server中的二進制文件進行更新操作,下面是詳細的代碼演示演示環境:數據庫機器名...查看完整版>>使用OleDbCommand對象更新SQL Server中的二進制文件
 
 
回到王朝網路移動版首頁