C#+Winform开发窗体程序

学习笔记

第一章:winform基础

一、概述

1、Windows Form(简称WinForm)

    是微软.NET平台下用于开发"图形界面"应用程序的组件。

    

2、C/S架构

    客户机(Client)/服务器(Server),是软件系统体系结构。

    通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

    

    B/S

    

二、在VS中新建窗体程序

1、认识窗体程序--第一个窗体程序

    1) 窗体设计器 : 设置窗体界面(经常操作)

     每个窗体都有对应的后台代码

          

     shift + F7 / F7:查看源码

        

        注:在窗体后台代码中,存在方法:InitializeComponent()

        它的作用是:对当前窗体的控件进行初始化工作。

        此方法不能丢,否则窗体不能正常显示控件

        如果要重载构造方法 ,在重载构造方法中也必须调用此方法

        

        F12查看方法的定义

 

    2)工具箱 : 包含了程序所需的控件

        操作:

        1)选择控件,向窗体设计器拖动

        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)常用方法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属性

    

    制作记事本

 

四、多窗体的实现(重点、难点)

0、面向对象的复习

1)类和对象

    类:类是对象的概括(类是对象的模板) -> 抽象的、模糊的、不具体的

    对象:对象是类的实例                -> 具体的,实际存在的

    

    注:概括:有用的,本质的,共同的

    

    学生是一个类

    每个学生都是一个对象

 

    面向对象的操作步骤:

    第一:定义类(对象的概括)

    [访问修饰符] class 类名

    {

        //1.字段 -> 类(对象)的具体数据(信息)

        private 数据类型 字段名 ;

        

        //2.属性 -> 是对字段的封装,对字段数据进行访问

        public 数据类型 属性名

        {

            set {字段名=value;}

            get {return 字段名;}

        }

        

        //3.方法 -> 是类(对象)实现的功能(业务)

        [访问修饰符] 数据类型 方法名([数据类型 形参1,...,数据类型 形参N])

        {

            方法体 -> 具体功能的实现

            [return 数据;]

        }

        

        注:在方法内,如果没有返回值,则数据类型声明为void

    }

    

    注:

        类的访问修饰符:public 、 internal(默认)

        类名、属性名、方法名使用帕斯卡名称规则

        字段名使用驼峰名称规则

        属性与字段息息相关(名称一般一样)

        

        特殊方法:构造方法

            方法名与类名相同

            没有返回值

            不能手动调用,在实例化对象时自动调用

            在实例化对象的同时,初始化对象

            在类中,如果用户没有定义构造方法,则默认存在一个构造方法

            语法如下:

            public 方法名[类名]([参数列表])

            {

                

            }

            

    第二:实例化对象(创建对象)

        类名 对象名 = new 类名() ;

    

    第三:初始化对象 -> 给对象的字段赋值

        对象名.属性 = 值 ;

    

    第四:操作 -> 调用方法

        [数据类型 变量名 = ]对象名.方法名([参数列表]) ;

    

-------------------------------------------------------------        

1、建立多窗体程序

    //第一:创建窗体对象

    窗体类 窗体对象 = new 窗体类() ;

    

    //第二:显示窗体

    窗体对象.Show() ;

    

    或

    

    窗体对象.ShowDialog() ;

    

    或

    if(窗体对象==null || 窗体对象.IsDisposed)

    {

        窗体对象 = new 窗体类() ;

        窗体对象.Show() ;

    }

2、传参 -> 构造方法

第一:创建窗体对象,把数据放在构造方法中传递

    窗体类 窗体对象 = new 窗体类(数据1,数据2,...,数据n) ;

 

    注:

        在窗体类中,默认只有一个缺省的构造方法(没有参数的构造方法)

        在窗体类中,必须存在对应的构造方法,且InitializeComponent()不能丢

 

第二:在窗体类中,定义对应参数的构造方法

 

第三:在窗体类中,定义对应的全局变量,接收构造方法获取的参数数据

 

第四:使用传递过来的数据->调用全局变量

 

第五:调用方法,显示窗体

    窗体对象.Show() ;

 

注意:

    1)如果要传递多个数据,

     且这些数据都是相关的,

     我们一般把这些数据封装成相关的对象进行传递。

    

    2)如果在第二个窗体中,要操作第一个窗体,怎么办呢?

        在创建第二个窗体实例对象时,

        通过构造方法,

        把第一个窗体传递过去

        

        窗体类 窗体对象 = new 窗体类(this) ;

        

        窗体类 窗体对象 = new 窗体类(this,数据1,...,数据N) ;

        

3、返回值

 

第三章:文件的读写

一、概述

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概述

1、概述

    (ActiveX Data Objects),数据库访问的方法和技术(组件)。

 

2、组成

    1).NET框架数据提供程序(.NET Framework Data Provider)

    

    2)数据集(DataSet)

    

    注:

    1)以上两个组成部分包含相关的数据库操作对象,如:

        Connection    : 连接数据库

        Command        : 执行SQL语句

        DataReader     : 读取查询结果

        DataAdapter    : 桥接数据库与数据集的联系,把数据库中的数据填充到DataSet中

        DataSet        : 数据在内存中缓存

        ...

        

    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 : 能捕获所有的异常

    

    上课:

        正常

        迟到

        早退

        旷课

 

五、复习

    1、数据表的创建

    2、数据表的增、删、改、查对应的SQL语句

    3、Command对象

 

ADO.NET

一.Connection对象

1.使用SqlConnection对象连接数据库

    第一步:字义连接数据库字符串

string dbstr = "Server=.;uid=sa;pwd=123456;DataBase=test";

 

    第二步:创建连接对象并,打开数据库连接,详细参数如下表所示:

SqlConnection conn = new SqlConnection(dbstr);

conn.open() ;

 

    第三步:做相关操作

 

参数

说明

Provider

这个属性用于设置或返回连接提供程序的名称,仅用于OleDBConnection对象

Connection Timeout

在终止尝试并产生异常前,等连接到服务器的连接时间长度(以秒为单位),默认值是15

Initial CatalogDataBase

连接数据库的名称

Data SourceServer

连接打开使用的SQL Server名称

Passwordpwd

连接数据的密码

User IDuid

SQL SERVER 登录帐户

 

2.使用OleDbConnection对象连接数据库

    第一步:定义连接数据库字符串

string dbstr = "Provider=SQLOLEDB;Data Source=.;Initial Catalog=test;uid=sa;pwd=123456";

 

    第二步:打开数据库连接,详细参数如下表所示:

OleDbConnection conn = new OleDbConnection(dbstr);

conn.open() ;

 

    第三步:相关操作

 

二.判断连接对象是否打开

if (conn.State == ConnectionState.Open)

{

MessageBox.Show("连接成功");

}

 

 

第六章:一、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的操作 - SQL

第一:创建连接对象 -> 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

0、作用:给SQL语句设置参数

 

1、好处    

    1)操作方便

    2)防止SQL注入,提高安全性

    3)提高查询执行性能

    

2、使用-创建对象(构造方法)

    SqlParameter param = new SqlParameter() ;

    SqlParameter param = new SqlParameter(参数名称,数据类型) ;

    SqlParameter param = new SqlParameter(参数名称,数据) ;

    SqlParameter param = new SqlParameter(参数名称,数据类型,大小) ;

    

3、常用属性

    Direction        : 获取或设置一个值,该值表示参数是只可输入、只可输出、双向还是存储过程返回值参数。

    ParameterName    : 获取或设置参数的名称。

    Size            : 获取或设置列中数据的最大大小。

    SqlDbType        : 获取或设置参数的数据类型,语法:SqlDbType.Xxxx。

    Value            : 获取或设置该参数的值。

 

4、常用方法

    Command对象.Parameters.add(Parameter对象) ;

    

    Command对象.Parameters.AddRange(Parameter对象数组) ;

    

5、操作

第一:定义参数化的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() ;

 

五、数据操作的封装

1、不定长参数的使用,语法如下:

[访问修饰符] 返回值类型 方法名(params 数据类型[] 参数名)

{

 

}

 

注:此方法可以接收N个数据

 

2、定义一个类、实现连接对象的获取

 

3、Parameter对象的使用

 

4、增、删、改的封装

 

5、查询的封装

转载于:https://www.cnblogs.com/xdzy/p/9457848.html

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值