1. 程式人生 > >C#學習記錄(47)MSSQL資料庫

C#學習記錄(47)MSSQL資料庫

引言

      微軟資料庫是針對中小型企業的關係型資料庫,操作簡單易上手。首先介紹下C#.NET的資料庫,以 ActiveX 資料物件(ADO)為基礎 以 XML(擴充套件標記語言)為格式傳送和接收資料:

            C#.NET應用程式  <----->ADO.NET<----->資料庫

程式中使用System.Data 名稱空間。

一. ADO.NET的框架:

       NET Framework資料提供程式是專門為資料處理以及快速地只進、只讀訪問資料而設計的元件。使用它,我們可以連線資料庫、執行命令和檢索資料,直接對資料庫進行操作。
       DataSet(資料集)是專門為獨立於任何資料來源的資料訪問而設計。使用它,我們可以不必直接和資料庫打交道,可以大批量地操作資料,也可以將資料繫結在控制元件上。

.NET通過以下的物件來進行資料庫的操作:
(1)Connection        建立與資料來源的連線
(2)Command         對資料來源執行操作命令
(3)DataReader      從資料來源中讀取只進且只讀的資料流
(4)DataAdapter     用資料來源填充DataSet並解析更新

1.Connection

Connection物件的主要屬性和方法
屬 性                                          說 明
ConnectionString                   用於連線資料庫的連線字串
方 法                                         說 明
Open()                              使用ConnectionString屬性所指定的設定開啟資料庫連線
Close()                              關閉與資料庫的連線

(1) 定義連線字串(可以直接在第(2)步中編寫)
不同的資料庫連線字串格式不同,SQL Server資料庫的連線字串格式一般為:
            Data Source=伺服器名;Initial Catalog=資料庫名; User ID=使用者名稱;Pwd=密碼
例如,要連線本機的pubs資料庫,連線字串寫成:
            string connString = "Data Source=.;Initial Catalog=pubs;User ID=sa";
經驗:
    伺服器如果是本機,可以輸入“.”來代替計算機名稱或者IP地址。密碼如果為空,可以省略Pwd一項。

(2). 建立 Connection 物件
呼叫定義好的連線字串建立Connection 物件。
SqlConnection connection = new SqlConnection(connString);
(3). 開啟與資料庫的連線
呼叫Connection 物件的Open()方法開啟資料庫連線。
connection.Open( );

(4) 關閉資料庫的連線

Connection.Close();

string connString = "Data Source=.;Initial Catalog=db_MrCy;UserID=sa;pwd=sa";
SqlConnection connection = new SqlConnection(connString);
// 開啟資料庫連線
connection.Open();
MessageBox.Show("開啟資料庫連線成功");
// 關閉資料庫連線
connection.Close();
MessageBox.Show("關閉資料庫連線成功");

2.使用Command物件
      開啟資料庫連線後,怎樣操作資料呢?這就需要Command物件(命令物件),Command物件可以對資料庫執行增刪改查的命令。

Command物件的主要屬性和方法
屬 性                                       說 明
Connection                      Command物件使用的資料庫連線
CommandText                執行的SQL語句
方 法                                       說 明
ExecuteNonQuery()   執行不返回行的語句,如update、delete等
ExecuteReader()        執行程式命令,返回DataReader物件

ExecuteScalar()         返回單個值,如執行count(*)等

ExecuteScalar()方法只返回查詢結果的第一行第一列的值,所以當我們的查詢結果只有一個值時,通常使用這個方法。方法的返回值要進行顯式型別轉換。
要使用Command物件,必須有一個已經連線的Connection物件,使用Command物件的步驟包括:
(1)建立資料庫連線
         按照上節介紹的步驟建立一個Connection物件。
(2)定義執行的SQL語句
         將對資料庫執行的SQL語句賦給一個字串。
(3)建立Command物件
         使用已有的Connection物件和SQL語句串建立一個Command物件。
(4)執行SQL語句
         使用Command物件的某個方法執行命令。

connection.Open(); // 開啟資料庫連線

SqlCommand command = new SqlCommand(sql, connection);  // 建立Command 物件

num = (int)command.ExecuteScalar();  // 執行SQL 查詢

message = string.Format("tb_Waiter表中共有{0}條員工資訊!",num);
MessageBox.Show(message,"查詢結果",MessageBoxButtons.OK,MessageBoxIcon.Information);

3.DataReader物件查詢、增刪改資料

使用DataReader物件可以從資料庫中檢索只讀資料,它每次從查詢結果中讀取一行到記憶體中,所以使用DataReader對資料庫進行操作非常快。DataReader屬於.NET Framework資料提供程式。

DataReader物件的主要屬性和方法
屬 性                說 明
HasRows         是否返回了結果
FieldCount      當前行中的列數
方 法                說 明
Read()        前進到下一行記錄
Close()       關閉 DataReader 物件

使用DataReader的步驟:
1. 建立Command物件

sql是查詢、增改刪語句。

SqlCommand command = new SqlCommand(sql, connection);  // 建立Command 物件
2. 呼叫Command物件的ExecuteReader()方法建立DataReader物件
SqlDataReader dataReader = command.ExecuteReader();
3. 使用 DataReader 的 Read() 方法逐行讀取資料這個方法返回一個布林值,如果能讀到一行記錄,就返回True,否則返回False。
dataReader.Read();
4. 讀取某列的資料,(type)dataReader[ 列名或序列號]像讀取陣列一樣,用方括號來讀取某列的值,如(string)dataReader["WaiterName"];  方括號可以像陣列一樣使用列的索引,從0開始,也可以使用列名,取出的值要進行型別轉換。
5. 關閉 DataReader 物件
使用dataReader物件讀取資料的時候會佔用資料庫連線,必須用它的Close()方法來關閉dataReader物件,才能用資料庫連線進行其它操作。
dataReader.Close();

//建立連線物件
SqlConnection conn = *****;
string sql = "SELECT waitertype FROM tb_Waitertype"; // 查詢員工類別的sql語句,也可以是增改刪語句。
// 設定command命令執行的語句
SqlCommand command = new SqlCommand(sql, conn);
try
{
    conn.Open(); // 開啟資料庫連線
    SqlDataReader dataReader = command.ExecuteReader(); // 執行查詢
    string waitertype = ""; // 類別名稱
    // 迴圈讀出所有的類別名,並新增到類別列表框中
    while (dataReader.Read())
    {
        waitertype = (string)dataReader["waiterType"];
        cboType.Items.Add(waitertype);
    }
    dataReader.Close();
}
catch (Exception ex)
{
    MessageBox.Show("操作資料庫出錯");
    Console.WriteLine(ex.Message);
}
finally
{
    conn.Close();
}

4.使用Listview控制元件繫結資料

列表檢視控制元件的主要屬性、事件和方法
屬性                        說明
Columns                  “詳細資訊”檢視中顯示的列
FullRowSelect            當選中一項時,它的子項是否同該項一起突出顯示
Items                    ListView中所有項的集合
MultiSelect              是否允許選擇多項
SelectedItems            選中的項的集合
View                     指定以哪種檢視顯示

事件                        說明
MouseDoubleClick         滑鼠雙擊事件

方法                        說明
Clear()                清除ListView中的所有項列

實際應用如下:

listview1.Items.Clear();//清空當前列表框
SqlConnection conn = **********;
conn.Open();///連線資料庫
SqlCommand cmd = new SqlCommand("select * from tb_Room", conn);//資料庫命令物件
sdr = cmd.ExecuteReader();//執行資料庫命令,返回DataReader物件
while (sdr.Read())///將DataReader物件依次讀取出來
{
    string zt = sdr["RoomZT"].ToString().Trim();
    
    AddItems(zt);//新增到列表框中的自定義函式
}
conn.Close();//關閉資料庫連線

相關推薦

C#學習記錄47MSSQL資料庫

引言       微軟資料庫是針對中小型企業的關係型資料庫,操作簡單易上手。首先介紹下C#.NET的資料庫,以 ActiveX 資料物件(ADO)為基礎 以 XML(擴充套件標記語言)為格式傳送和接收資料:             C#.NET應用程式  <----

C#學習記錄-------document.all使用方法

一.  document.all是頁面內所有元素的一個集合。例如:        document.all(0)表示頁面內第一個元素 二. document.all可以判斷瀏覽器是否是IE     if(document.all){       alert("is   IE

C語言學習記錄3

C語言學習記錄 Mooc上C語言練習 念整數 題目內容: 你的程式要讀入一個整數,範圍是[-100000,100000]。然後,用漢語拼音將這個整數的每一位輸出出來。 如輸入1234,則輸出: yi er san si 注意,每個字的拼音之間有一個空格,但是最

C語言學習記錄4

C語言學習記錄 學校的OJ上的題 青年歌手大獎賽_評委會打分 題目描述 青年歌手大獎賽中,評委會給參賽選手打分。選手得分規則為去掉一個最高分和一個最低分,然後計算平均得分,請程式設計輸出某選手的得分。 輸入描述 輸入資料有多組,每組佔一行,每行的第一個數是n(

C語言學習記錄7時間格式轉換

C語言學習記錄 學習OJ上的C語言題 時間格式轉換 題目描述 編寫一個程式,要求使用者輸入24小時制的時間,然後按照12小時制的格式顯示出來。 提示: hours == 0時,顯示12:MM AM hours < 12時,顯示HH:MM AM hours

C語言學習記錄8列印三角圖形

C語言學習記錄 前言 一直自己沒有學習做筆記的習慣,所以為了加強自己對知識的深入理解,決定將學習筆記寫下來,希望向各位大牛們學習交流! 不當之處請斧正!在此感謝!這邊就先從學習C語言寫起,自己本身對程式語言方面不擅長,所以決定對此從基礎開始學習, 大牛們對此文可

C++學習筆記——leetcode記錄

C++學習筆記(一)——leetcode記錄 944. Delete Columns to Make Sorted [Easy] 852. Peak Index in a Mountain Array [Easy] 942. DI String

C#學習筆記7——委托

() namespace test task cnblogs [] string 命名空間 program 說明(2017-5-29 22:22:50): 1. 語法:public delegate void mydel();這一句在類外面,命名空間裏面。 2. 專門新建一

C#學習筆記12——三種方法操作XML

結點 記得 ext 應用程序 eval 資源 特性 pla cells 說明(2017-7-11 16:56:13): 原文地址: C#中常用的幾種讀取XML文件的方法 XML文件是一種常用的文件格式,例如WinForm裏面的app.config以及Web程序中的web.c

BigData 學習記錄

如果 lock 都沒有 stream 節點 信息 nod 存在 物理 master/slave主從結構: HDFS是一個 master/slave的架構。HDFS只有一個NameNode,即master。master負責管理文件系統命名空間和client對文件的訪問。此外,

BigData 學習記錄

merge 而且 seq 運行時間 big 存儲位置 完成 setup 其中 MR(MapReduce)運行過程 client程序--》提交job至JobTracker--》分配job ID--》JobTracker檢查輸入文件存在,輸出文件不存在--》進行輸入分片--

FCC學習記錄—— Responsive Design with Bootsstrap

響應式 sheet 工作 apc resp style ima 通過 大小 1.Bootstrap的基本了解:     Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使

Uferryman FCC學習記錄—— jQuery

dto query ndt 子節點 nth 註意 tex cnblogs app 1.jQuery基本了解:   JQuery是一個開源的JavaScript庫,創始人John Resig 2.jQuery的開始準備:   $(document).ready(functio

linux學習記錄

設備 ima 權限 logs spf style www. 塊設備 alt 1、各種顏色文件的含義 黃色表示設備文件 灰色表示其它文件 白色表示普通文件 綠色表示可執行文件; 紅色表示壓縮文件; 淺藍色表示鏈接文件; 灰色表示其它文件; 紅色閃爍表示鏈接的文件有問題了;

vue學習記錄—— vue開發調試神器vue-devtools安裝

shell gist 項目 擴展工具 code blog manifest false .net 網上有些貼子少了至關重要的一步導致我一直沒裝上, 切記!!install後還需build,且install和build都在vue-devtools文件夾內執行 github下載

c++學習筆記- lambda表達式 叠代器 算法

tex 參數 p s 刷題 algo 叠代器 裏的 blog 而且 關於lambda表達式: 刷題的時候遇到一句代碼不懂: char ch = *it;auto it2 = find_if(it, b.end(), [ch](char x){ return x != ch

Linux命令學習記錄

配置 相關 分享圖片 ati 記錄 str gem 技術分享 padding Linux中一切都是文件;目錄說明:bin:binary的縮寫,表示“二進制文件”,包含所有用戶使用的執行程序boot:“啟動”,包含與Linux啟動密切相關的文件dev:device,“設備”包

Seaborn學習記錄1

uav cm4 () strong log 均值 idt 技術 important seaborn學習記錄(1) 常用矩形圖 distplot 先從矩形圖開始,一直報錯,大概意思是str類型不能畫圖!.csv文件是我從 Excel 件導出來的,因此又仔細看了一遍,發現其中

C++學習心得

eof gpo pre typeid 學習 div ctrl+z c++ str 2018-01-20 while (cin >> n)//終止可以使用輸入eof或Ctrl+Z for (auto &c : str) cout <

Linux命令學習記錄

oss file process itl alt 技術 bsp image 運行命令 ln命令:創建鏈接(快捷方式)每個文件有一個標示號碼,就是inode;硬鏈接原理是,使鏈接的兩個文件共享同樣的文件內容,即同樣的inode。缺陷:只能創建文件的硬鏈接,不能創建目錄的硬鏈接