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() ;

 

posted @ 2018-08-10 22:37  肖德子裕  阅读(23091)  评论(0编辑  收藏  举报