1. 程式人生 > >我的C#之路-dataset、datatable的繫結、清空、新增、刪除等操作

我的C#之路-dataset、datatable的繫結、清空、新增、刪除等操作

一、dataset和datatable

先說說dataset和datatable,dataset是datatable的一個集合,也就是說一個dataset中可以包含多個datatable,可以用ds.tables[0] ds.tables[1]... 來表示,所以我的習慣一般是建立DataSet ds = new DataSet(),再將多種資料來源繫結到ds中,按照繫結的順序,通過ds.tables[i] 來進行資料操作。

1、繫結資料來源的方式:

從資料庫篩選後繫結:

 DataSet ds = new DataSet();
string connect = "Database=test;server=localhost;User Id=root;Password=root;";
MySqlConnection conn = new MySqlConnection(connect);
conn.Open();
string select_store_info = "select *from information order by 城市;"; //獲取所有資訊並存入store_information 
cmd = new MySqlCommand(select_store_info, conn); 
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
adapter.Fill(ds, "store_information");//自己命名一個在ds中的表名"store_information",用於儲存本次的資料
conn.Close();
或者datatable中的繫結:
adapter.Fill(dt);//不用寫表名

用這種方法有個問題,那就是如果想在中間插入一段程式碼,那後面ds.tables[i]的程式碼都要改。如果想要更好地區分資料來源,可以通過兩種方法

(1)ds.Tables.Clear();  如果確定之前繫結的資料在後面用不到了,那麼可以通過clear的方式,清空資料表並再次繫結新資料來源,將上述相關程式碼改為:

DataSet ds = new DataSet():
adapter.Fill(ds, "store_information");
這樣在後面呼叫時,都呼叫ds.tables[0]就行了

還有,clear方法有

ds.clear()和ds.tables.clear(),前者清空的所有ds中資料,是dataset類中的方法,後者是tatatable類中的方法,如果寫的是tables那就是清空的所有ds中資料,若寫的是tables[i]那就是清空特定表,我之前使用時,用ds.clear()有清空不乾淨的情況發生,所以後來我一直用ds.tables.clear()。

(2)DataSet dsnew = new DataSet();

更方便的方法,再new一個形的dataset。

2、dataset常用操作

ds.tables.add("who");//在ds中加入一個datatable
ds.tables.add(table1);//將table1加入到dataset集合中
remove和canremove
        if (dt.Tables.CanRemove(table))//驗證是否可被移除
            dt.Tables.Remove(table);

或者:

        if (dataSet.Tables.CanRemove(table))
            dataSet.Tables.RemoveAt(0);
還有contains、copyto、indexof等一些方法不介紹了,可以參看MSDN關於datatablecollection方法類中的說明

二、將dataset中的資料繫結到datagridview、combobox中

combobox:

string selectstorename1 = "select name from store_arrange where 日期='"
       + day1.ToString("yyyy-MM-dd") + "' and 時間='" + comboBox1.Text + "';";
MySqlCommand cmd = new MySqlCommand(selectstorename1, conn);
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
adapter.Fill(ds, "selecttime");
comboBox3.DisplayMember = "name";//DisplayMember是資料庫操作時,select出來的列名
comboBox3.ValueMember = "";<span style="white-space: pre;"> </span>//可隨意定義
adapter.Fill(ds, "selecttime"); 
comboBox3.DisplayMember = "name";//DisplayMember是資料庫操作時,select出來的列名
comboBox3.DataSource = ds.Tables[0].DefaultView;
datagridview:
dataGridView1.DataSource = dt;
或者
dataGridView1.DataSource = ds.tables[0];
清空combobox和datagridview
comboBox1.Items.Clear();

下次寫一下如何在datagridview中寫出個日曆

會包括datagridview對行、列的增刪改,datetime相關

相關推薦

C#-datasetdatatable新增刪除操作

一、dataset和datatable 先說說dataset和datatable,dataset是datatable的一個集合,也就是說一個dataset中可以包含多個datatable,可以用ds.tables[0] ds.tables[1]... 來表示,所以我的習慣一

c++多型性(動態)

多型性 指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。C++支援兩種多型性:編譯時多型性,執行時多型性。   a、編譯時多型性:通過過載函式實現    b、執行時多型性:通過虛擬函式實現  多型性可以簡單地概括為“一

字典 combobox 遇到一些問題

我用 $("#asd").combobox("clear");//清空<input>繫結的字典 //用 var asd=$("asd").combogrid('grid').datagrid('getSeleceted').PHRASE; //asd還可以獲得清空前的值 //解決

c#----數制轉換

一、.Parse方法 語法格式:   1 int a = int.Parse(Console.ReadLine()); 二、顯示轉換 語法格式: 1 double a = double.Parse(Console.ReadLine()); 2 int b = (int)a; 三

專案實戰vue爬坑:vue框架中如何註冊全域性公共過濾器filter全域性公共外掛全域性公共元件component

專案需求: 在我們的實際專案的開發中,經常會遇到一些可以重複利用的方法和元件,比如:我們在一個專案中可能會經常用到格式化時間的方法。這個時候就需要我們把這個方法封裝起來,註冊成一個全域性的過濾器,在整個專案中都可以使用,這樣既可以提高程式碼的使用效率,也便於我們

微信小程式填坑(三):佈局適配方案(rpxpxvwvh)

因為小程式是以微信為平臺執行的,可以同時執行在android與ios的裝置上,所以不可避免的會遇到佈局適配問題,特別是在iphone5上,因為螢幕尺寸小的緣故,也是適配問題最多的機型,下面就簡單介紹幾種適配方法。 rpx適配 rpx是小程式中

$Django 小知識回顧,Vue樣式element-ui,Vue圖片--mounted頁面掛載--路由攜帶引數

一 小知識回顧 1 級聯刪除問題 2 一張表關聯多個表,比如有manytomanyfileds forignkey,基於物件查詢存在的問題:反向查詢的時候  表名小寫_set.all()不知是哪個欄位queryset物件  所以說related_name='coursedetail_b

DataTableTable控制元件中的資料(vb.net經典應用)

Sub bind_table(ByVal tbl As DataTable)Dim cn AsNew SqlClient.SqlConnection(P_Con)        Dim cmd As SqlClient.SqlCommand = cn.CreateCommand        Dim adpt

聚合Trunk和捆綁簡析

       關於鏈路聚合(Link Aggregation)、Trunk和埠繫結/捆綁這三種概念很容易混淆,主旨都是利用鏈路冗餘提供伺服器、交換機和儲存間的可靠性,或利用冗餘埠實現負載均衡等;

小程式開發檢視層WXML資料運算組合及物件

WXML WXML(WeiXin Markup Language)是框架設計的一套標籤語言,結合基礎元件、事件系統,可以構建出頁面的結構。 資料繫結 WXML 中的動態資料均來自對應 Page 的 data。 簡單繫結 資料繫結使用 Mustache 語法(雙大括號)

微信標籤語言頁面結構檔案--資料條件渲染

頁面結構檔案      WXML(weixin markup language)是框架設計的一套標記語言,用於渲染介面,WXML的渲染原理,通過一套標記語言,在不同平臺被解析為不同端的渲染檔案。 WXML具有資料繫結、列表渲染、條件渲染、模板、事件等能力。

C# Winform 關於ListView控制元件DataTable

今天用到ListView控制元件,這裡總結一下ListView控制元件繫結DataTable的方法 下面需要特別注意的是,繫結的過程中實現繫結控制元件的column的屬性,再進行item的繫結。 與DataGridView不同的是,不能直接使用DataSourse繫結, 再

DataSet,DataTablegridview

前臺 <asp:Button ID="Button1" runat="server" Text="顯示" onclick="Button1_Click" />  <asp:Button ID="Button2" runat="server" onclick

C++ vector的記憶體管理與效率

    好長時間沒有寫部落格了,重新開始寫又有一點不一樣的感覺,有點悵然若失,或者說是又有點小期待,一直以來狀態不是很好,但不管如何還是要堅強地、勇敢地走下去。    言歸正傳       C++中vector是一項大殺器,相當於可自動變長的陣列,在不改變容量的情況下,其效率

[js高手] es6系列教程 - 叠代器,生成器,for...of,entries,values,keys詳解

== 我會 item 獲取 prot ron 原型對象 檢測 ges 接著上文[js高手之路] es6系列教程 - 叠代器與生成器詳解繼續. 在es6中引入了一個新的循環結構for ....of, 主要是用來循環可叠代的對象,那麽什麽是可叠代的對象呢? 可叠代的對象一

Vue表單控制元件

1.text <p>text輸入文字</p> <span>Hello {{name}}</span> <input type="text" v-model="name" placeholder="yous name" name

阿里雲CentOS 7.3 裸機搭建 ApacheMySqlPHPNode環境域名

阿里雲CentOS 7.3 裸機搭建 Apache、MySql、PHP、Node境、並繫結域名 最近一直想在阿里雲申請一個伺服器,可以在上面跑一些服務,輸入域名訪問,那種感覺肯定很不一樣。所以就花學生價買了一年,還是挺划算的。 域名備案花了挺長時間,又上傳照片又打電話核實的挺麻煩的,不過

【常用】查詢輸入框:一個關鍵字多個屬性(包括intstring不同的型別)

從input獲取輸入一個待查詢關鍵字key,前端不區分,傳到後臺再進行處理,基本邏輯如下: //根據訂單號(int)或者供應商名稱(string)查詢訂單 if (!string.IsNullOrEmpty(key)) { var Id = MathTools.ToInt(key);

深入理解JavaScriptthis的四種

  之前對this的四種繫結不太理解,好在瀏覽了https://www.cnblogs.com/xiaohuochai/p/5735901.html這篇博文,才得以清晰思路,接下來我再次總結this的四種繫結機制。 1  this的四種繫結機制   在JavaS

vue起步三v-bind資料

設定一個數據為website的值為http://www.baidu.com 在html中我們進行繫結通過v-bind:屬性名=“鍵名” 如:<a v-bind:href="website">web開發</a> 注意:這裡的website沒有兩個大括號