日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

DataSet操作数据库

發布時間:2025/3/13 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataSet操作数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DataSet操作數據庫
________________________________________________________________________________________________________

SqlConnection thisConnection = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;Initial Catalog=數據庫名");
thisConnection.Open();//打開數據庫連接
SqlDataAdapter 適配器一 = new SqlDataAdapter("select * from 顧客", thisConnection);
DataSet thisDataSet = new DataSet();//數據集
適配器一.Fill(thisDataSet, "表名");//填充數據集
thisDataSet.Tables["表名"].Rows[0]["列名"]="更新";//在內存中更新數據
thisAdapter.Update(thisDataSet, "表名");//更新數據庫
thisConnection.Close();//關閉數據庫連接
********************************************************************************************************

ADO.net的主要對象元素:_______________________________________________________________________________________________________
1.添加記錄 (添加行)
??添加記錄首先需要聲明兩個變量 DataTable ,DataRow
??其中DataTable需要實例化到具體的數據集中的某個table
??DataRow = DataTable.NewRow()??聲明為Table的新Row
??再對DataRow進行賦值,調用DataTable.Rows.Add(DataRow)即可
????????????DataColumn[] keys = new DataColumn[1];
????????????keys[0] = thisDataSet.Tables["表名"].Columns["列名"];


________________________________________________________________________________________________________
2.刪除紀錄?
??如下 DataTable.Rows[5].Delete();?
??推想:應該可以這樣,首先申明一個變量 DataRow[] objRows 用來存儲要刪除的行
??objRows = DataTable.Select("查詢條件");
??thisDataSet.Tables["表名"].PrimaryKey = keys;//設置主鍵,可以定義多個主鍵,無非就是keys[0]、key[1]、key[2]...多定義幾個就可以了
??DataRow findRow = thisDataSet.Tables["表名"].Rows.Find("列數據");//查找行,這種方法只能用于查找主鍵,也就是在表中惟一地標識行的值或值集合

??if (findRow == null)
??{
????Console.WriteLine("未找到,將添加行");
????DataRow thisRow = thisDataSet.Tables["表名"].NewRow();
????thisRow["列名"] = "新數據";
????thisDataSet.Tables["表名"].Rows.Add(thisRow);//添加行
??}
??else if (findRow != null)
{
????Console.WriteLine("找到,將刪除行");
????findRow.Delete();
??}
??thisAdapter.Update(thisDataSet, "表名");//更新數據庫

________________________________________________________________________________________________________
3.修改紀錄 (編輯行)
??首先聲明一個變量 DataRow[] objRows用來存儲要編輯的行
??objRows = DataTable.Select("查詢條件");?
??如果是一行,可以這樣 objRows = DataTable.Rows[3];
??再對其進行修改 如 objRows[0][FIELD1]=""??objRows[0][FIELD2]=""
????????????thisDataSet.Tables["表名"].Rows[0]["列名"] = "更新";//在內存中更新數據
????????????thisAdapter.Update(thisDataSet, "表名");//更新數據庫

實際上Delete()等方法并不執行刪除等操作,它僅僅標記要刪除的行,在Rows集合中的每一個DateRow對象都有RowState,它跟蹤記錄此行是被刪除、添加、修改,還是不變,實際上在此中的操作全部在內存中進行,而Update()方法才真正更新數據庫。Delete()方法將行的RowState設置為Deleted,然后Update()就在數據庫中將在Rows集合中標記為Deleted的所有行刪除。
Visual Studio.NET在線文檔會提示您在執行Delete()方法之后調用DataSet的AcceptChanges()方法;但是,這僅能刪除DataSet中的行,卻不影響數據庫中的行,因為Update()僅影響在Rows集合中找到的行,遺漏的行將被忽略掉。如果希望在數據庫中刪除行,則不要在調用Update()之前調用AcceptChanges()方法。
這個問題也適用于Remove()方法;僅當希望從DataSet的Rows集合中,而不是數據庫中刪除行時才調用它。

________________________________________________________________________________________________________
3.表查詢
????????????DataRow[] 權限清單Row = this.superCargoDataSet.Tables["權限清單"].Select("操作員ID=" + 操作員ID);
------------------------
????????????OleDbCommand thisCommand=thisConnection.CreateCommand(); //
????????????thisCommand.CommandText="Select * FROM 表名";
????????????OleDbDataReader thisReader=thisCommand.ExecuteReader();
????????????while(thisReader.Read())
????????????{
????????????Console.WriteLine("/t{0}/t{1}",thisReader["ID"],thisReader["TheName"]);
????????????}
????????????thisReader.Close();


????????????/*--------------前提--------------*/
????????????SqlDataAdapter thisAdapter = new SqlDataAdapter("select * from 表名", thisConnection); //適配器
????????????SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter);//將命令構造器與適配器關聯,用于自動生成SQL語句
????????????DataSet thisDataSet = new DataSet();//數據集
????????????thisAdapter.Fill(thisDataSet, "表名");//填充數據集
????????????Console.WriteLine("輸出數據:{0}", thisDataSet.Tables["表名"].Rows[0]["列名"]);//輸出數據


________________________________________________________________________________________________________
5.創建表關系
????????????SqlDataAdapter 適配器一 = new SqlDataAdapter("select * from 顧客", thisConnection);
????????????SqlDataAdapter 適配器二 = new SqlDataAdapter("select * from 訂單明細", thisConnection);
????????????適配器一.Fill(thisDataSet, "顧客");//填充
????????????適配器二.Fill(thisDataSet, "訂單明細");//填充
????????????//創建關系
????????????DataRelation 關系 = thisDataSet.Relations.Add("顧客和訂單", thisDataSet.Tables["顧客"].Columns["顧客ID"], thisDataSet.Tables["訂單明細"].Columns["顧客ID"]);//父列必須位于子列之前
????????????//在這以后加一句??顧客和訂單.Nested=true;  將會在以后的WriteXml()方法中,將子表記錄嵌套在文件中,如將在輸出XML中將購貨明細表輸出在購貨記錄下

????????????//使用關系
????????????foreach (DataRow custRow in thisDataSet.Tables["顧客"].Rows)
????????????{
????????Console.WriteLine("顧客ID:"+custRow["顧客ID"]+"??名字:"+custRow["名字"]);
????????????????foreach (DataRow orderRow in custRow.GetChildRows(顧客和訂單))
????????????????{
????????Console.WriteLine("??????訂單:"+orderRow["訂單內容"]);
????????????????}
????????????}?

轉載于:https://www.cnblogs.com/kevinzhwl/archive/2010/07/08/3878914.html

總結

以上是生活随笔為你收集整理的DataSet操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。