C#+Winform開發窗體程序


第一章: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM