Home [ADO.NET] DataSet 原理和用法
Post
Cancel

[ADO.NET] DataSet 原理和用法

1.DataSet是什麼?

DateSet在c#程式中建立一個暫存資料庫

2.命名空间

1
using System.Data;

3.DataSet的建立和用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//建立一個臨時資料庫
DataSet ds = new DataSet();

//建立一個臨時表
DataTable dt = new DataTable();

//新增自增主鍵
DataColumn dcId = new DataColumn("id");
dcId.AutoIncrement = true;//自增
dcId.AutoIncrementSeed = 1;//種子
dcId.AutoIncrementStep = 1;//步長
dt.Columns.Add(dcId);//加入dt中

//第二種新增列的方式, 新增一列名字
DataColumn cdName = new DataColumn("name", typeof(string));
dt.Columns.Add(cdName);

//新增一行數據
DataRow row = dt.NewRow();
row["name"] = "rii";
row["password"] = "123456";
dt.Rows.Add(row);

4.以下為完整程式碼,及一些其他用法包括多種新增方式、遍歷等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
namespace dataset
{
    class Program
    {
        static void Main(string[] args)
        {
            //建立一個臨時資料庫
            DataSet ds = new DataSet();
            //建立一個臨時表
            DataTable dt = new DataTable();
            //datatable被new出來時是什麼都沒有的,需要加入行列

            //第一種新增方式 新增一列id號
            //新增自增主鍵
            DataColumn dcId = new DataColumn("id");
            dcId.AutoIncrement = true;//自增
            dcId.AutoIncrementSeed = 1;//種子
            dcId.AutoIncrementStep = 1;//步長
            dt.Columns.Add(dcId);//加入dt中
            //第二種新增列的方式, 新增一列名字
            DataColumn cdName = new DataColumn("name", typeof(string));

            dt.Columns.Add(cdName);

            //第三種新增方式
            dt.Columns.Add("password", typeof(string));

            //新增行數據
            // DataRow row = new DataRow();這個種是不對的,new出來是沒有格式的
            //原因是datarow的建構子是protected的所以不能再外部new DataRow的對象
            DataRow row = dt.NewRow();
            row["name"] = "tian";
            row["password"] = "123456";
            dt.Rows.Add(row);

            //新增多行數據
            for (int i = 0; i < 10; i++)
            {
                DataRow dr = dt.NewRow();
                dr["name"] = "LS" + i.ToString();
                dr["password"] = "456" + i.ToString();
                dt.Rows.Add(dr);
            }
            //把表加到DataSet中
            ds.Tables.Add(dt);
            //遍歷所有的表
            foreach(DataTable table in ds.Tables)
            {
                //遍歷每行
                foreach(DataRow rows in table.Rows)
                {
                    for(int i = 0; i < table.Columns.Count; i++)
                    {
                        Console.Write(rows[i] + "\t");
                    }
                    Console.WriteLine();
                }
            }
        }
    }
}

以上只是為了示範DataSet原理,和簡單用法

真正用法

填滿DataSet
DataSet不是上我們手動填的,而是導入資料庫的。

1
2
3
4
5
//在內部自動封裝了sqlconnection和sqlcommand
SqlDataAdapter adapter = new SqlDataAdapter(sql, connString);
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

這樣就導入到了臨時庫中。 下面是一個窗體實例:

這是點擊按鈕後的結果圖
下面為程式碼部分:

頭檔需要添加

1
2
using System.Data.SqlClient;
using System.Configuration; //需要引用以下這個組件
1
2
3
4
5
6
7
string connString = ConfigurationManager.AppSettings["connString"];
string sql = "select * from Tbstudent";
//在內部自動封裝了sqlconnection和sqlcommand
SqlDataAdapter adapter = new SqlDataAdapter(sql, connString);
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

這是按鈕的程式碼部分 中間connString 應用了設定檔

CSDN - c#中的DataSet原理和用法
CSDN - c#中填充DataSet

This post is licensed under CC BY 4.0 by the author.

[ADO.NET] DataSet、DataTable、DataReader、DataAdapter之間的差異

[ADO.NET] DataSet 物件(資料集)