第一章:WinForm基礎
一、概述
1、Windows Form(簡稱WinForm)
是微軟.NET平台下用於開發"圖形界面"應用程序的組件。
2、C/S架構
客戶機(Client)/服務器(Server),是軟件系統體系結構。
通過它可以充分利用兩端硬件環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。
二、在VS中新建窗體程序
1、認識窗體程序(第一個窗體程序)
1)窗體設計器:設置窗體界面(經常操作)
每個窗體都有對應的后台代碼
shift + F7 / F7:查看源碼
注:在窗體后台代碼中,存在方法:InitializeComponent()
它的作用是:對當前窗體的控件進行初始化工作,此方法不能丟,否則窗體不能正常顯示控件,如果要重載構造方法 ,在重載構造方法中也必須調用此方法。
F12查看方法的定義
2)工具箱:包含了程序所需的控件
操作:
2.1)選擇控件,向窗體設計器拖動
2.2)雙擊控件
注:在WinForm中,所有的控件,包括窗體都是對象
3)解決方案資源管理器
3.1)項目
3.2)Properties:對當前項目的屬性進行設置
3.3)引用
3.4)Resources:資源信息
3.5)窗體程序 --> Xxxx.cs
3.6)主程序(窗體程序的入口):Programe.cs,設置啟動窗體:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new 窗體名稱());
}
4)屬性面板
對控件進行相關的設置(經常操作)
選擇不同的控件,屬性面板的屬性會不一樣
左邊是屬性名,右邊是屬性值(需要用戶設置)
5)事件:單擊,雙擊,鼠標移動,離開,經過,鍵盤相關事件
表示觸發程序執行的某件事發生的信號,如單擊
控件包含:屬性,方法,事件
2、開發窗體程序的步驟
1)新建窗體程序項目
2)打開窗體設備器,添加控件(工具箱)
3)選擇控件,設置屬性
注:在實際開發中,一般都會給控件取一個有意義的名字,便於調用
4)選擇控件,添加相應事件(單擊,雙擊,鼠標移動,離開,經過,鍵盤相關事件)
5)在事件方法中,編寫代碼實現業務功能
基於面向對象的思想來編寫程序
控件是對象
對象名.屬性 = 值 ;
對象名.方法() ;
控件名.屬性 = 值 ;
控件名.方法() ;
6)根據需求重復以上工作
7)運行、測試
3、在后面章節,我們主要學習控件(對象)的三方面的內容
1)屬性
2)方法
3)事件
三、窗體(Form)
1、常用屬性
1)窗體名稱:Name
注:在實例開發中,不要使用默認的名字,建議定義一個有意義的名稱,方便調用
命名規范:frmXxxx
2)窗體標題 : Text
3)背景顏色 : BackColor
4)設置窗體背景圖片:BackgroundImage
BackgroundImageLayout:設置背景圖片布局
5)修改窗體的大小:Size(Width、Height)
6)設置按Enter鍵時所單擊窗體上的按鈕:AcceptButton
7)窗體的圖標:Icon*.ico
8)窗體邊框樣式:FormBorderStyle
Fixed3D:固定的三維邊框
FixedDialog:固定的對話框樣式的粗邊框
FixedSingle:固定的單行邊框
FixedToolWindow:不可調整大小的工具窗口邊框
None:無邊框
Sizable:可調整大小的邊框
SizableToolWindow:可調整大小的工具窗口邊框
9)控件窗體的顯示位置:StartPosition
CenterParent:窗體在其父窗體中居中
CenterScreen:窗體在屏幕中居中
Manual:由Location屬性確定
WindowsDefaultBounds:Windows默認位置,其邊界由Windows默認決定。
WindowsDefaultLocation:Windows默認位置,其尺寸在窗體大小中指定。
10)控件窗體的最大化和最小化
MaximizeBox
MinimizeBox
11)設置窗體啟動時,默認是最大化還是最小化:WindowState
Normal:還原窗口
Minimized:最小化窗口
Maximized:最大化窗口
12)控件窗體總在最前:TopMost
13)設置窗體透明度:Opacity
2、窗體的方法(必須要實例化對象訪問)
1)顯示窗體
模式窗體:ShowDialog():只有關閉當前窗口才能訪問另一個窗口
非模式窗體:Show()
2)Hide():隱藏窗體,不破壞窗體,也不釋放資源
3)Close():關閉窗體,釋放資源
3、事件
1)Activated:窗體激活
2)Load:窗體加載
3)FormClosing:窗體關閉
第二章(上):控件與窗體
一、文本編輯控件
1、標簽:Label
1)作用:用於顯示文字(標簽、標題)
2)常用屬性:
Text:設置顯示的文本內容
ForeColor:設置前景顏色
AutoSize:是否自動調整大小
Font:設置字體
2、按鈕:Button
1)作用:提供用戶通過單擊來執行各種各樣的操作
2)常用屬性:
BackgroundImage:背景圖像
BackgroundImageLayout:設置背景圖像的布局樣式
FlatStyle:設置平面樣式外觀
Text:設置顯示的文本內容
TextAlign:對齊方式
Enabled : 設置按鈕是否可用
3)常用事件:
click
3、文本框:TextBox
1)作用
提供用戶輸入數據,或顯示數據
默認單行
最多可以接收32767個字符
不包括制表符、圖片
可以實現密碼輸入效果
2)常用屬性
Text:設置/獲取文本框中的內容
MaxLength:輸入最大字符數
ReadOnly:是否只讀(不可編輯)
PasswordChar:密碼字符
MultiLine:是否為多行文本框
ScrollBars:為多行文本框時,設置滾動條
3)常用方法
Focus():獲取焦點
Clear():清除文本框內容
4)常用事件
TextChanged:Text屬性更改時發生
leave:當焦點離開控件時觸發
4、富文本框:RichTextBox
1)作用
功能同上,比TextBox功能更強大
默認是多行
最多可以接收2147483647個字符
包括制表符、圖片
無法實現密碼輸入效果
2)常用屬性
3)常用方法
4)常用事件
Bitmap bmp = new Bitmap(@"D:\test\20140226082603.jpg");
Clipboard.SetDataObject(bmp);
DataFormats.Format dataFormat = DataFormats.GetFormat(DataFormats.Bitmap);//格式
if (richTextBox1.CanPaste(dataFormat))
richTextBox1.Paste(dataFormat);
二、圖片框:PictureBox
1)作用
顯示圖片
支持bmp、jpeg、gif、png等格式
2)常用屬性
Name : 控件名稱,前綴pic
Image : 控件顯示的圖片
Image.FromFile("c:\1.jpg") ;
SizeMode:控制PictureBox將如何處理圖片位置和控件大小
3)常用方法
4)常用事件
三、定時器:Timer
1)作用
控制每隔一段時間做某些操作
2)常用屬性
Name : 控件名稱
Enabled : 啟用定時器
Interval : 設置時間間隔,單位是毫秒
1秒 = 1000毫秒
3)常用方法
4)常用事件
Tick : 每隔一段時間,所做的事情在此事件中實現
5)操作步驟:
第一:拖Timer控件到窗體中
第二:設置時間間隔--Interval
第三:添加Tick事件,實現每間隔一段時間所做事情(功能)
第四:啟用定時器--Enabled=true ;
注:
1>各個控件必須指定Name屬性值,便於調用
2>控件就是對象,因此,可以通過以下代碼來設置屬性:
設置屬性:控件名.屬性 = 值 ;
獲取屬性: 數據類型 變量名 = 控件名.屬性 ;
3>控件都有以下三個特性:
屬性
方法 -> [數據類型 變量名 = ]控件名.方法名([參數列表]) ;
事件
4>不規則窗體的移動
鼠標坐標位置:MousePosition
窗體坐標位置:Location
坐標對象:Point
鼠標按下事件:MouseDown
鼠標移動事件:MouseMove
第二章(下):繼續控件
一、選擇控件
1、單選框:RadioButton
1)作用:互斥選擇一個內容
2)常用屬性
Checked:是否已經選擇
Text:顯示內容
Appearance : 顯示樣式
3)常用事件
CheckedChaged:更改選擇時發生
Click : 單擊事件
注:在當前窗體默認只有一組單選框,可以結合GroupBox和Panel控件實現多組單選框。
2、多選框類:CheckBox
1)作用:選擇多個內容
2)常用屬性:
Checked:選擇
Text:內容
Appearance : 顯示樣式
3)常用事件
Checkedchanged:更改選擇時發生
二、列表控件
1、下拉列表(組合框):ComboBox
1)作用:用於下拉顯示數據
2)常用屬性:
Items:下拉列表的所有內容
Items.Count : 選項數量
MaxDroDownItems:設置下拉顯示內容的數量
DropDownStyle:設置下拉列表框樣式(不可編輯)
SelectedItem:當前選定的內容
SelectedIndex:設置/獲取列表選中內容的下標索引(從0開始)
3)常用方法
ComboBox對象.FindString(內容) : 查找內容對應的下標位置(從0開始),如果找不到返回-1;
ComboBox對象.FindString(內容,下標位置) : 從指定下標位置開始查找內容對應的下標位置,如果找不到返回-1;
ComboBox對象.Items.Add(內容) : 添加內容;
ComboBox對象.Items.AddRange(new string[]{項1,項2,...,項n}) ;
ComboBox對象.Items.Insert(下標索引,內容) : 在指定索引位置添加內容;
ComboBox對象.Items.Remove(內容) : 刪除內容;
ComboBox對象.Items.RemoveAt(下標索引) : 根據下標索引刪除內容;
ComboBox對象.Items.Clear() : 清空內容;
4)常用事件
SelectedIndexChanged:改變下拉列表框時發生的事件
2、列表選擇控件:ListBox
1)作用:把數據以列表的形式顯示,用戶可以選擇其中的數據
2)常用的屬性:
Items:列表框的所有內容,是ArrayList類對象,內容是字符串
Items.Count:所有選項的數量
SelectedItems:獲取包含ListBox中當前選定項的集合
SelectedItems.Count : 選中選項的數量
SelectedIndex : 設置/獲取列表選中內容的下標索引(從0開始)
SelectedItem :返回當前選定的某一項,如果沒選中,則發生異常
Text : 返回當前選定的某一項,如果沒選中,則返回空字符串
SelectionMode:設置可選的條目數
Sorted:是否以字母的順序排序
3)常用的方法
同ComboBox控件
ListBox對象.SetSelected(下標索引,bool) : 選擇或取消選擇某項內容。
三、菜單欄和快捷菜單
1、菜單欄:MenuStrip
文件(&F):添加快捷提示 -> alt + F
-:菜單分隔符
ShortcutKeys:設置快捷鍵
2、快捷菜單:ContextMenu
第一:設置菜單 (同上)
第二:關聯控件 -> ContextMenuStrip屬性
四、多窗體的實現(重點、難點)
1、面向對象的復習
1)類和對象
類:類是對象的概括(類是對象的模板)->抽象的、模糊的、不具體的
對象:對象是類的實例->具體的,實際存在的
注:概括:有用的,本質的,共同的
學生是一個類
每個學生都是一個對象
面向對象的操作步驟:
第一:定義類(對象的概括)
[訪問修飾符] class 類名
{
//1.字段 -> 類(對象)的具體數據(信息)
private 數據類型 字段名 ;
//2.屬性 -> 是對字段的封裝,對字段數據進行訪問
public 數據類型 屬性名
{
set {字段名=value;}
get {return 字段名;}
}
//3.方法 -> 是類(對象)實現的功能(業務)
[訪問修飾符] 數據類型 方法名([數據類型 形參1,...,數據類型 形參N])
{
方法體 -> 具體功能的實現
[return 數據;]
}
注:在方法內,如果沒有返回值,則數據類型聲明為void
}
注:
類的訪問修飾符:public 、 internal(默認)
類名、屬性名、方法名使用帕斯卡名稱規則
字段名使用駝峰名稱規則
屬性與字段息息相關(名稱一般一樣)
特殊方法:構造方法
方法名與類名相同
沒有返回值
不能手動調用,在實例化對象時自動調用
在實例化對象的同時,初始化對象
在類中,如果用戶沒有定義構造方法,則默認存在一個構造方法
語法如下:
public 方法名類名
{
}
第二:實例化對象(創建對象)
類名 對象名 = new 類名() ;
第三:初始化對象 -> 給對象的字段賦值
對象名.屬性 = 值 ;
第四:操作 -> 調用方法
[數據類型 變量名 = ]對象名.方法名([參數列表]) ;
2、建立多窗體程序
//第一:創建窗體對象
窗體類 窗體對象 = new 窗體類() ;
//第二:顯示窗體
窗體對象.Show() ;
或
窗體對象.ShowDialog() ;
或
if(窗體對象==null || 窗體對象.IsDisposed)
{
窗體對象 = new 窗體類() ;
窗體對象.Show() ;
}
3、傳參 -> 構造方法
第一:創建窗體對象,把數據放在構造方法中傳遞
窗體類 窗體對象 = new 窗體類(數據1,數據2,...,數據n) ;
注:
在窗體類中,默認只有一個缺省的構造方法(沒有參數的構造方法)
在窗體類中,必須存在對應的構造方法,且InitializeComponent()不能丟
第二:在窗體類中,定義對應參數的構造方法
第三:在窗體類中,定義對應的全局變量,接收構造方法獲取的參數數據
第四:使用傳遞過來的數據->調用全局變量
第五:調用方法,顯示窗體
窗體對象.Show() ;
注意:
1)如果要傳遞多個數據,且這些數據都是相關的,我們一般把這些數據封裝成相關的對象進行傳遞。
2)如果在第二個窗體中,要操作第一個窗體,怎么辦呢?
在創建第二個窗體實例對象時,通過構造方法,把第一個窗體傳遞過去:
窗體類 窗體對象 = new 窗體類(this) ;
窗體類 窗體對象 = new 窗體類(this,數據1,...,數據N) ;
4、返回值
第三章:文件的讀寫
一、概述
1、流:相當於一個管道,C#程序通過流來讀寫文件
流,分為:
輸入流 : 相當於程序而言,數據從文件寫入到程序這個過程
輸出流 : 相當於程序而方,數據從程序輸出到文件中的過程
2、FileStream對象
FileStream對象表示在磁盤或網絡路徑上指向文件的流(指向要操作的文件);
在FileStream的基礎上,使用StreamReader或StreamWriter實現文件的讀寫(字節方式)。
FileStream 對象 = new FileStream(String path,FileModel model[,FileAccess access,FileShare share])
參數說明:
path:指向要操作的文件(路徑+文件名)
model:打開文件的方式
access:訪問文件的方式
share:文件共享方式
二、文件的讀取(StreamReader)
1、語法
StreamReader 對象 = new StreamReader(Stream stream[,Encoding.字符編碼]) ;
StreamReader 對象 = new StreamReader(filename[,Encoding.字符編碼]) ;
參數說明:
stream : 要讀取的文件流(FileStrem是其中的Stream)
filename : 路徑+文件名
Encoding : 字符編碼
2、方法
ReadLine() : 一行一行地讀取文件,讀到文件的末尾時,返回null
ReadToEnd() : 從文件的開始到末尾,一次性讀取
Close() : 關閉流
三、文件的寫入(StreamWriter)
1、語法:
StreamWriter 對象 = new StreamWriter(Stream stream) ;
StreamWriter 對象 = new StreamWriter(Stream stream,bool append,Encoding encoding) ;
StreamWriter 對象 = new StreamWriter(string filename,bool append,Encoding encoding) ;
參數說明:
stream : 要寫入文件的流
append : 是否追加
encoding : 字符編碼
filename : 路徑+文件名
2、方法
Write() : 寫入數據
WriteLine() : 寫入數據並換行
flush() : 清空緩沖區
Close() : 關閉流
四、快速文件操作
1、文件寫入
1)File.AppendAllText(string path,string content,Encoding encoding)
path : 路徑+文件
content : 向文件添加的內容
encoding : 編碼
添加內容到文件,如果文件存在,追加內容到文件,最后關閉文件;
如果文件不存在,則創建文件並添加內容到文件,最后關閉文件
File.AppendAllText("e:\bb.txt","你好",Encoding.Default);
2)File.WriteAllBytes(string path,byte[] bytes)
File.WriteAllBytes("e:\bb.txt", Encoding.Default.GetBytes("你好"));
3)File.WriteAllLines(string path,string[] content,Encoding encoding) ;
string[] str = { "我", "好" };
File.WriteAllLines("e:\bb.txt", str, Encoding.Default);
4)File.WriteAllText(string path,string content,Encoding encoding) ;
File.WriteAllText("e:\bb.txt", "好好學習", Encoding.Default);
2、文件讀取
1)File.ReadAllText(string path[,Encoding encoding]) ;
String str = File.ReadAllText("e:\bb.txt",Encoding.Default);
2)File.ReadAllBytes(string path) ;
byte[] str = File.ReadAllBytes("e:\bb.txt");
MessageBox.Show(System.Text.Encoding.Default.GetString(str));
3)File.ReadAllLines(string path[,Encoding encoding]) ;
string[] str = File.ReadAllLines("e:\bb.txt", Encoding.Default);
MessageBox.Show(string.Join(",",str));
3、文件操作
1)File.Encrypt(string path) : 加密文件
2)File.Decrypt(string path) : 解密文件
3)File.Exists(string path) : 判斷文件是否存在
4)File.Delete(string path) : 刪除文件
5)File.Copy(string sourceFile,String DestFile) : 復制文件
第四章:ADO.NET
一、ADO.NET概述
1、概述
(ActiveX Data Objects),數據庫訪問的方法和技術(組件)。
2、組成
1).NET框架數據提供程序(.NET Framework Data Provider)
2)數據集(DataSet)
注:
2.1)以上兩個組成部分包含相關的數據庫操作對象,如:
Connection:連接數據庫
Command:執行SQL語句
DataReader:讀取查詢結果
DataAdapter:橋接數據庫與數據集的聯系,把數據庫中的數據填充到DataSet中
DataSet: 數據在內存中緩存
...
2.2)SQL Server的數據提供程序中,其命名空間為:System.Data.SqlClient
SqlXxxxx
二、連接對象(SqlConnection)
連接SQL Server數據庫
System.Data.SqlClient
三、配置文件
1、在項目中新建一個配置文件,命名為:App.config
右鍵項目 -> 添加 -> 新建項 -> 應用程序配置文件 -> 確定
注意:如果項目中已經存在App.config文件,則不需要添加
2、在App.config文件中,進行配置
方式一:
<connectionStrings>
<add name="dbstr" connectionString="Server=.;uid=sa;pwd=;DataBase=abc"/>
</connectionStrings>
說明:
1)connectionStrings : 表示定義連接字符串
2)add : 添加具體的連接字符串
name : 字符串的名稱
connectionString : 連接字符串的具體內容
3)相當於在App.config文件中定義:
string dbstr = "Server=.;uid=sa;pwd=;DataBase=abc" ;
方式二:
<appSettings>
<add key="connStr" value="Server=.;uid=sa;pwd=;DataBase=abc"/>
<add key="age" value="18"/>
</appSettings>
3.在程序中,讀取App.config文件中的連接信息
string str1 = ConfigurationSettings.AppSettings["dbstr"];
string str2 = ConfigurationManager.AppSettings["dbstr"];
string str3 = ConfigurationManager.ConnectionStrings["dbstr"].ConnectionString;
注意:需要在項目中,添加引用System.Configuration,操作如下:
右鍵項目 -> 添加 -> 引用 -> 勾選System.Configuration -> 確定
四、異常處理
特殊的程序控制語句: 程序出錯了,保證程序能正常的執行,而不會被終止
try
{
有可能發生錯誤的代碼 ;
conn.Open() ;
....
conn.Close() ;
}
catch(Xxxxx x)
{
對錯誤進行相關的處理
}
[
finally
{
不管正確與否,都會被執行->一般用於釋放資源
conn.Close() ;
}
]
注:Xxxxx表示的異常的種類
Exception : 能捕獲所有的異常
第五章:知識鞏固
一、Connection對象
1、使用SqlConnection對象連接數據庫
第一步:字義連接數據庫字符串
第二步:創建連接對象並,打開數據庫連接,詳細參數如下表所示:
第三步:做相關操作
參數 | 說明 |
---|---|
Provider | 這個屬性用於設置或返回連接提供程序的名稱,僅用於OleDBConnection對象 |
Connection Timeout | 在終止嘗試並產生異常前,等連接到服務器的連接時間長度(以秒為單位),默認值是15秒 |
Initial Catalog或DataBase | 連接數據庫的名稱 |
Data Source或Server | 連接打開使用的SQL Server名稱 |
Password或pwd | 連接數據的密碼 |
User ID或uid | SQL SERVER 登錄帳戶 |
2.使用OleDbConnection對象連接數據庫
第一步:定義連接數據庫字符串
第二步:打開數據庫連接,詳細參數如下表所示:
第三步:相關操作
第六章:復習提升
一、Command對象(SqlCommand)
1、作用
設置和執行SQL語句的對象。
2、常用屬性
CommandType:獲取和設置Command對象要執行命令的類型
CommandText:獲取和設置要對數據源執行的SQL語句或存儲過程名或表名
CommandTimeOut:獲取和設置在終止對執行命令的嘗試並生成錯誤之前的待時間
Connection:獲取或設置Command對象使用的Connection對象的名稱
Parameters: 獲取Command對象需要使用的參數集合
Transaction:獲取或設置將在SqlCommand對象執行的SqlTransaction對象
3、常用方法
ExecuteNonQuery:用戶執行非Select命令,返回受影響的數據行數
ExecuteScalar:用於執行Select命令,返回數據中第一行第一列的值
ExecuteReader:執行Select命令,並返回一個DataReader對象
4、使用
類名 對象名 = new 類名() ;
SqlCommand cmd = new SqlCommand() ;
SqlCommand cmd = new SqlCommand(string sql) ;
SqlCommand cmd = new SqlCommand(string sql,SqlConnection conn) ;
SqlCommand cmd = new SqlCommand(string sql,SqlConnection conn,SqlTransaction tran) ;
5、實現CRUD的操作
第一:創建連接對象 -> SqlConnection
1)定義連接字符串
string dbstr = "server=.;uid=sa;pwd=123;database=xsgl" ;
2)創建SqlConnection並設置連接字符串
SqlConnection conn = new SqlConnection(dbstr) ;
3)打開連接
conn.Open() ;
第二:創建語句對象 -> SqlCommand
1)創建語句對象
SqlCommand cmd = new SqlCommand() ;
2)設置屬性
cmd.CommandText = "SQL語句" ;
cmd.Connection = 連接對象 ;
第三:執行SQL語句 -> 返回受影響的記錄數/DataReader對象
命令對象.ExecuteNonQuery() ;
或
命令對象.ExecuteScalar() ;
或
命令對象.ExecuteReader() ;
第四:關閉對象
連接對象.Close() ;
二、MD5加密
1、引用命名空間
using System.Security.Cryptography ;
2、操作
//第一:創建Md5加密對象
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
//第二:把加密的數據轉換為字節數組
byte[] bytes = Encoding.UTF8.GetBytes("明文");
//第三:對字節數組進行加密
byte[] newBytes = md5.ComputeHash(bytes);
//第四:把字符數組轉換字符串,輸出結果
MessageBox.Show(BitConverter.ToString(bytes));
注:MD5加密后,得到一個32位的十六進制的字符串
三、Parameter對象(SqlParameter)
1、作用:給SQL語句設置參數
2、好處
1)操作方便
2)防止SQL注入,提高安全性
3)提高查詢執行性能
3、使用-創建對象(構造方法)
SqlParameter param = new SqlParameter() ;
SqlParameter param = new SqlParameter(參數名稱,數據類型) ;
SqlParameter param = new SqlParameter(參數名稱,數據) ;
SqlParameter param = new SqlParameter(參數名稱,數據類型,大小) ;
4、常用屬性
Direction:獲取或設置一個值,該值表示參數是只可輸入、只可輸出、雙向還是存儲過程返回值參數。
ParameterName:獲取或設置參數的名稱。
Size:獲取或設置列中數據的最大大小。
SqlDbType:獲取或設置參數的數據類型,語法:SqlDbType.Xxxx。
Value:獲取或設置該參數的值。
5、常用方法
Command對象.Parameters.add(Parameter對象) ;
Command對象.Parameters.AddRange(Parameter對象數組) ;
6、操作
第一:定義參數化的SQL語句,參數的語法:@參數名稱
string sql = "insert into student(name,age) values (@xm,@age)" ;
第二:創建SqlParameter對象或SqlParameter對象數組
SqlParameter param1 = new SqlParameter("@xm","張三") ;
SqlParameter param2 = new SqlParameter("@age",18) ;
或
SqlParameter[] ps =
{
new SqlParameter("@xm","張三"),
new SqlParameter("@age",18)
}
第三:添加參數
Command對象.Parameters.add(param1) ;
Command對象.Parameters.add(param2) ;
或
Command對象.Parameters.AddRange(ps) ;
四、DataReader對象(SqlDataReader)
1、作用:讀取查詢的數據
2、特點
只讀(而DataSet可讀可寫)
以流的方式,單向讀取
一次只能讀取一條記錄
3、使用
通過Command對象的ExecuteReader()方法返回(創建)DataReader對象
SqlDataReader reader = new SqlDataReader() ;
4、常用屬性
FieldCount:返回列數(字段數量)
HasRows:是否存在數據(記錄、行)
IsClosed:DataReader對象是否關閉
5、常用方法
Read():讀取記錄中的數據
Close():關閉DataReader對象
GetValue(字段的下標索引):獲取指定字段的數據
GetValues():獲取全部字段的數據
IsNull("userId"):判斷指定字段的數據是否為Null值
6、操作
第一:執行查詢的SQL語句,獲取DataReader對象的實例
SqlDataReader reader = Command對象.ExecuteReader() ;
第二:循環的讀到數據
while(reader.read()
{
//讀取數據
}
注:讀取數據的方式有:
方式一:通過下標讀取(下標從0開始)
數據類型 變量 = (數據類型)SqlDataReader對象[下標] ;
方式二:通過字段名稱讀取
數據類型 變量 = (數據類型)SqlDataReader對象["字段名稱"] ;
第三:關閉SqlDataReader對象
reader.Close() ;
第七章:記事本開發
https://www.cnblogs.com/xdzy/p/9458683.html