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#學習記錄(47)MSSQL資料庫
引言 微軟資料庫是針對中小型企業的關係型資料庫,操作簡單易上手。首先介紹下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。缺陷:只能創建文件的硬鏈接,不能創建目錄的硬鏈接