zoukankan      html  css  js  c++  java
  • 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:	est20140226082603.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:b.txt","你好",Encoding.Default);

     

    2)File.WriteAllBytes(string path,byte[] bytes)

    File.WriteAllBytes("e:b.txt", Encoding.Default.GetBytes("你好"));

     

    3)File.WriteAllLines(string path,string[] content,Encoding encoding) ;

    string[] str = { "我", "好" };

    File.WriteAllLines("e:b.txt", str, Encoding.Default);

     

    4)File.WriteAllText(string path,string content,Encoding encoding) ;

    File.WriteAllText("e:b.txt", "好好学习", Encoding.Default);

     

    2、文件读取

    1)File.ReadAllText(string path[,Encoding encoding]) ;

    String str = File.ReadAllText("e:b.txt",Encoding.Default);

     

    2)File.ReadAllBytes(string path) ;

    byte[] str = File.ReadAllBytes("e:b.txt");

    MessageBox.Show(System.Text.Encoding.Default.GetString(str));

     

    3)File.ReadAllLines(string path[,Encoding encoding]) ;

    string[] str = File.ReadAllLines("e:b.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() ;

     

  • 相关阅读:
    IOS 自动布局-UIStackPanel和UIGridPanel(三)
    IOS 自动布局-UIStackPanel和UIGridPanel(二)
    IOS 自动布局-UIStackPanel和UIGridPanel(一)
    我的新博客
    Topcoder SRM655 DIV1 500 Nine
    BestCoder Round #38 1002 Greatest Greatest Common Divisor 筛法
    BestCoder Round #38 1001 Four Inages Strategy 暴力
    Google Code Jam 2015 Round 1A Haircut 二分
    Google Code Jam 2015 Round 1A Mushroom Monster 水
    Topcoder SRM656 DIV1 250 RandomPancakeStack 概率DP
  • 原文地址:https://www.cnblogs.com/xdzy/p/9457848.html
Copyright © 2011-2022 走看看