c#复习总结

来源:互联网 发布:淘宝卡价格刷单 编辑:程序博客网 时间:2024/06/05 16:36
 

   C#第一章笔记
1.C#程序的框架
  namespace 包名
  {
 class 类名
 { 
  static void Main(string[] args)
  {
   Console.WriteLine("Hello .net");
   Console.ReadLine();
  }
 }
  }
解释:
namespace:命名空间的声明,类似于java程序中的package(包),java中包的概念在C#中叫做命名空间。叫法改了但是意义一样
using:导入命名空间。与java中的import关键字类似,导入包
class:类,c#也是面向对象的高级编程语言,同样也是有class表示类。程序模板代码会自动取一个类名,叫Program,类名可以更改。注意:C#与java不同,不需要类名和文件名一致!
Main:Main方法程序的切入口,跟java中的main方法是一样的。注意:C#中Main中M必须大写!

2.C#中的数据类型
  int 整型
  float 单精度浮点型
  string 字符串型
  bool 布尔类型

3.C#中的运算符
  算术运算符 + - * / % ++ --
  比较运算符 > < >= <= == !=
  条件运算符 ?:
  赋值运算符 = += -= *= /= %=
  逻辑运算符 && || !
  与java类似

4.C#代码的注意事项:
  1)代码每句结束必须加分号;
  2)代码严格区分大小写
  3)C#中的注释:单行// 多行/*  *./ 文档注释:///

5.控制台函数
  Console类,是控制台类,在控制台进行输入输出。
  Console.WriteLine();输出后换行
  Console.Write();输出后部换行
  Console.ReadLine();输入,代码的末尾出现这句代码,意义是输出窗口停在那里,等待用户的输入然后再关闭。
 
  与java不同的输出方式:
  Console.WriteLine("格式字符串",变量列表)
  例子:String c="C#";
  Console.WriteLine("我的课程名称是:{0}",c);

  输入:
  string name=Console.ReadLine(); //接收字符串数据
  Console.ReadLine();只能够用于接收字符串,如果需要接收int型数据需要强制类型转换,如下:
  int age=int.Parse(Console.ReadLine());
  int.Parse()方法就是把字符串强制转换为整数

6.C#中的条件判断结构:
  if-else语法:
  if(条件)
  {
 代码;
  }
  else
  {
 代码;
  }
  多重if结构:
  if(条件)
  {
 代码;
  }
  else if(条件)
  {
 代码;
  }
  ...
  else
  {
 代码;
  }
switch-case结构:
switch(表达式) -->变量可以是int,单个字符型,字符串型,
{
 case 常量1:
        代码;
 break;
        case 常量2:
        代码;
 break;
 ...
 default:
        代码;
 break; 
}
注意:break关键字必不可少,除非case 常量:后没有任何语句的时候可以不要break!

 

 

   第二章
1.C#中的循环结构
  分类:
  A.while
  B.do-while
  C.for
  D.foreach
  语法:
  A.while(循环条件)
   {
 循环操作;
   }

  B.do
   {
 循环操作;
   }while(循环条件);

  C,for(声明变量并初始化;判断条件;自增或自减)
    {
 循环操作;
    }
    三种循环的工作原理跟java中是一模一样。
   D.foreach(类型 取名 in 集合或者数组)
     {
 循环操作;
     }
   foreach循环一般用于遍历整个集合或数组


2.vs中代码调试的步骤:
1)设置断点 双击或者快捷键F9
2)开始调试 F5
3)单步调试,研究变量值 F10
4)停止调试 shift+F5

3.嵌套循环(二重循环)
 语法:
for()
{
 代码;
 for()
 {
  代码;
  ...
 }
}
嵌套循环break和continue的区别?
  当break和continue用在内层循环中时,只会影响内层循环的执行,对外层循环没有影响
  break是跳出本层循环,执行外层循环,continue是跳出本次循环而继续执行下一次循环

4.c#中的数组
  1)声明一维数组语法:数据类型[] 数组名;
  例如:int[] a;
  2)指定数组的大小 int[] a=new int[3];
  3)给数组赋值(初始化) int[] a=new int[5]{1,2,3,4,5};
        int[] a=new int[]{0,1,2,3,4};
        int[] a={0,1,2,3,4};
  4)获取数组长度:数组名.Length

5.冒泡排序
  一般用于对数组进行升序排序
  关键代码记忆:
  int[] a={12,89,45,66,88};
  int i,j;
  int temp;
  for(i=0;i<a.Length-1;i++) //5个数字要比较多少轮
  {
 for(j=0;j<a.Length-1-i;j++)//将数值大的交换到最后
 {
  if(a[j]>a[j+1])
  {
   //交换元素
   temp=a[j];
   a[j]=a[j+1];
   a[j+1]=temp;
  }
 } 
  }
  //排序后输出
  Console.WriteLine("排序后的成绩是:");
  for(i=0;i<a.Length;i++)
  {
 Console.Write("{0}\t",a[i]);
  }
  Console.ReadLine();
   

 

  第三章笔记
1.方法的定义
  语法:
  访问修饰符 返回类型 方法名(参数列表)
  {
 //方法的主体;
  }
  访问修饰符的种类:
  public 公共的,任何的类中都可以访问
  private 私有的,只能在定义的该类中使用
  方法的返回类型
  int
  float
  double
  bool
  string
  方法名:是程序员自己定义的名字,一般方法名有实际的意义,并且要注意命名规范。
  参数列表
  定义参数的语法:数据类型 参数名
  多个参数之间去逗号隔开,方法分为有参的方法和无参的方法
 
  有参的方法
  关于值传递,不会保留更改后的结果,需要使用引用传递。
  public static int getNum(ref int num1,ref int num2)
  {
 
  }
  调用此方法:
  getNum(ref num1,ref num2);

2.String类
  常用的字符串方法
  Equals  比较2个字符串的值是否相等
  Compare 比较2个字符串的大小关系,返回是int型整数,小于返回值小于0,等于返回值等于0,大于返回值大于0.
  IndexOf 返回字符串的下标数字,下标从0开始,没有匹配数据返回-1
  LastIndexOf 返回下标,获取字符串中最后一个出现的字符下标。
  Join 把字符串中的每个数据用指定的分隔符连接
  Split 用指定的分隔符分割字符串,返回分割后的字符串组成的数组
  ToLower 小写
  ToUper  去掉字符串两端的空格

3. Format();格式化输出

4.C#中的数据类型转换
  分类:1.隐式类型转换
 2.显示类型转换 (强制类型转换)
  转换为整型:int.Parse(string);
  转换为浮点型:float.Parse(string);
  转换为字符串型 .ToString()方法
 
  Convert类进行数据类型转换
  整型:Convert.ToInt32()
  转换为单精度浮点型:Convert.ToSingle();
  转换为双精度浮点型:Convert.ToDouble();
  转换为字符串型:Convert.ToString();
 
 

    c#第四章 windows窗体应用程序
1.在VS中创建Windows应用程序的步骤:
  1)打开 VS
  2)新建项目
  3)项目类型:Visual C# 项目
  4)模板:Windows 应用程序

2.窗体重要的属性
  Name :窗体对象的名字,类似于变量的名字
  BackColor :窗体的背景色
  ShowInTaskBar :设置窗体是否出现在任务栏    
  StartPosition :窗体第一次出现时的位置    
  Text :窗体标题栏显示的文字    
  TopMost :设置窗体是否为最顶端的窗体    
  WindowState :窗体出现时最初的状态(正常、最大化、最小化)  
 
3.windows应用程序通过时间来处理用户请求
  常用的事件:
  Load  :窗体加载事件
  MouseClick :鼠标单击事件
  MouseDoubleClick :鼠标双击事件
  MouseMove :鼠标移动事件
  KeyDown :键盘按下事件
  KeyUp :键盘释放事件
       
4.窗体的设计
  菜单设置:工具箱中找到MenuStrip 控件
  Label :标签      命名规范 lbl
  TextBox :文本框   txt
  ListBox :列表框   lst
  ComboBox :组合框  cbo
  GroupBox :分组框  grp
  Panel :面板       pnl
  RadioButton :单选按钮 rdo
  Button : 按钮  btn

 5.实现窗体中的跳转
   1)定义窗体对象  被调用的窗体类名  窗体对象 = new 被调用的窗体类名( );
   2)显示窗体      窗体对象.show();
   
 6.消息框的显示 MessageBox
   最简单的消息框
   MessageBox.Show( "请输入用户姓名" ); 
  
   带标题的消息框
   MessageBox.Show("请输入用户姓名", "输入提示"); 
  
   带标题、按钮的消息框
   MessageBox.Show("请输入用户姓名",  "输入提示", MessageBoxButtons.OKCancel); 

   带标题、按钮、图标的消息框
MessageBox.Show("请输入用户姓名", "输入提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information); 


                           
    第五章笔记
1.窗体布局格式排列设置
  1)对齐窗体中的控件
    选中要调整的控件 格式-->对齐方式
  2)使用Anchor排列控件 与窗体一起动态调整控件的大小
    小技巧:按住ctrl键选择多个需要调整的控件
  3)使用Dock 将控件停靠在窗体的边缘或填充窗体


2.MDI窗体
  为什么要使用MDI窗体
  为了在一个应用程序下同时打开多个窗体,需要使用到MDI
  什么是MDI窗体
  在MDI窗体中打开多个子窗口
  如何使用MDI?
  A.设置MDI父窗体 窗体的属性:IsMdiContainer为true
  B.设置要在父窗体中显示的子窗体
    在菜单中的子菜单中click事件中:
    子窗体名 对象名=new 子窗体名();
    对象名.MdiParent=this; //设置找到父窗体
    对象名.Show();//显示子窗体
  MDI的特点:
  1) 启动MDI应用程序,首先显示父窗体
  2) MDI是所有子窗体的容器
  3) 每个应用程序界面只有一个MDI父窗体
  4) 在任何指定的时间都可以打开多个子窗体
  5) 任何MDI子窗体都不能移除MDI框架区域
  6) 关闭MDI父窗体则自动关闭所有打开的MDI子窗体
                  


3.为菜单中的退出添加退出提示
  DialogResult d = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            if (d == DialogResult.OK)//如果选择了OK
            {
                Application.Exit(); //应用程序退出
            }

4.winforms高级控件
  1)工具条 ToolStrip
    属性         说明
    DisplayStyle 设置图像和文本的显示方式
    Image  按钮/标签上显示的图片
    Text  按钮/标签上显示的文本
    事件  说明
    Click  单击按钮/标签时,触发该事件
  2)选项卡 TabControl
    属性  说明
    MultiLine  是否可以显示多行选项卡
    TabPages  包含的选项卡页的集合
    SelectedIndex 当前所选选项卡页的索引值

  3)图片框 PictrueBox
  4)图片列表 ImageList
    属性:images 存放图片集合
  5)定时器 Timer 
    属性 说明
    Interval 事件发生的频率,以毫秒为单位
    Enabled 是否定时引发事件
    事件 说明
    Tick 定时发生的事件
  Timer_tick事件
   // 如果当前显示的图片索引没有到最大值就继续增加
            if (index < 图片集合控件name.Images.Count - 1)
            {
                index++;
            }
            else  // 否则从第一个图片开始显示,索引从0开始
            {
                index = 0;           
            }
            // 设置图片框显示的图片  
            图片容器name.Image = 图片集合控件name.Images[index];

6)窗体名.Show();与窗体名.ShowDialog(); 的区别:
  窗体名.Show();打开一个窗体
  窗体名.ShowDialog();将窗体显示为具有所有指定者的模式对话框

7)登录验证、用户权限参考代码
  自定义方法-用户验证
  private bool ValidateInput()
        {
            if (txtLogInId.Text.Trim() == "")
            {
                MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtLogInId.Focus();//让文本框获取光标
                return false;
            }
            else if (txtLogInPwd.Text.Trim() == "")
            {
                MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtLogInPwd.Focus();
                return false;
            }
            else if (cboLogInType.Text.Trim() == "")
            {
                MessageBox.Show("请选择登录类型", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return false;
            }
            else
            {
                return true;
            }           
        }    
自定义方法-权限登录:
public void ShowUserForm()
        {
            switch (cboLogInType.Text)
            {
                // 如果是学员,显示学员窗体
                case "学员":
                    MessageBox.Show("抱歉,您请求的功能尚未完成!");
                    break;
                // 如果是教员,显示教员窗体
                case "教员":
                    MessageBox.Show("抱歉,您请求的功能尚未完成!");
                    break;
                // 如果是管理员,显示管理员窗体
                case "管理员":
                    AdminForm adminForm = new AdminForm();
                    adminForm.Show();
                    break;
                default:
                    MessageBox.Show("抱歉,您请求的功能尚未完成!");
                    break;
            }
        }

调用方法-登录按钮click事件中:
 // 如果验证通过,就显示相应的用户窗体,并将当前窗体设为不可见
            if (ValidateInput())//用户验证的方法 --返回的是bool
            { 
                // 显示相应的窗体
                // 将输入的用户名保存到静态变量中
                UserHelper.loginId = txtLogInId.Text;
                // 将选择的登录类型保存到静态变量中
                UserHelper.loginType = cboLogInType.Text;

                ShowUserForm();  // 显示相应用户的主窗体

                this.Visible = false;               
            }

UserHelper.cs
public class UserHelper
    {
        public static string loginId = "";  // 用户名
        public static string loginType = "";  // 登录类型
    }
   
   
   C#第六章笔记 ADO.NET连接数据库
1.ado.net的主要组件:
  1)DataSet 数据集
  2).net Framework数据提供程序

2.ado.net中常用的操作对象
  1)Connection对象  负责连接数据库
  2)Command对象     负责对数据库执行命令
  3)DataSet         存放独立于数据源的数据
  4)dataReader      负责从数据源读取数据
  5)dataAdapter     负责数据集个数据库的联系
  本章重点讲1、2个对象

3.支持的数据库以及所在的命名空间
  数据库类型              所在的命名空间
  SQL Server              System.Data.SqlClient
  OLE DB    System.Data.OleDb
  ODBC                    System.Data.Odbc
  Oracle                  System.Data.OracleClient

4.连接数据库的步骤
  1)定义连接字符串
    Data Source=.;Initial Catalog=库名;uid=用户名;pwd=密码
  2)创建连接数据库的对象
    SqlConnection conn=new SqlConnection(定义的连接字符串变量);注意:使用SqlConnection对象必须要导入命名空间 using System.Data.SqlClient;
  3)打开数据库的连接
    conn.Open();

5)处理异常代码块
  try
  {
 可能出现异常的代码;
  }
  catch(处理的异常类型)
  {
 处理异常的代码
  }
  finally
  {
 无论如何都要执行的代码
  }

6.Command对象的主要成员:
  属性:Connection Command对象使用的数据库连接
        CommandText 执行的sql语句
  方法
  ExecuteNonQuery  执行没有返回数据行的sql语句,如update、insert、delete
  ExecuteReader    读取结果集的对象
  ExecuteScalar    返回单个值,如执行count(*)语句

使用Command步骤:
1、创建数据库连接
2、定义 SQL 语句
3、创建 Command 对象
4、执行方法

  示例代码:
  SqlConnection connection = new SqlConnection(connString);
  string sql = "SELECT COUNT(*) FROM Student";
  connection.Open();// 打开数据库连接
  SqlCommand command = new SqlCommand(sql, connection);
  int num = (int)command.ExecuteScalar();

  以下代码可不抄!
  综合案例 对应数据库 是否存在真实的管理员信息
  判断用户是否存在 解题思路
  1)建立数据库连接
    增加DBHelper类
    // 数据库连接字符串
        private static string connString = "Data Source=.;Initial Catalog=MySchool;User ID=sa;Pwd=sa";

        // 数据库连接 Connection 对象
        public static SqlConnection connection = new SqlConnection(connString);


  自定义方法--判断用户名是否存在
  public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message)
        {
            int count = 0;             // 数据库查询的结果
            bool isValidUser = false;  // 返回值,是否找到该用户

            // 查询是否存在匹配的用户名和密码
            if (loginType == "管理员")  // 判断管理员用户
            {
                // 查询用sql语句
                string sql = string.Format(
                    "SELECT COUNT(*) FROM Admin WHERE LogInId='{0}' AND LogInPwd='{1}'", loginId, loginPwd
                );

                try
                {
                    // 创建Command命令
                    SqlCommand command = new SqlCommand(sql, DBHelper.connection); 
                    DBHelper.connection.Open();  // 打开连接

                    count = (int)command.ExecuteScalar();  // 执行查询语句

                    // 如果找到1个,验证通过,否则是非法用户
                    if (count == 1)
                    {
                        isValidUser = true;
                    }                   
                    else
                    {
                        message = "用户名或密码不存在!";
                        isValidUser = false;
                    }
                }
                catch (Exception ex)
                {
                    message = ex.Message;
                    Console.WriteLine(ex.Message); // 出现异常,打印异常消息
                }
                finally
                {
                    DBHelper.connection.Close(); // 关闭数据库连接
                }
            }
            else if (loginType == "学员")
            {
                // 查询用sql语句
                string sql = string.Format(
                    "SELECT COUNT(*) FROM Student WHERE LogInId='{0}' AND LogInPwd='{1}'",txtLogInId, txtLogInPwd
                );       

                try
                {
                    SqlCommand command = new SqlCommand(sql, DBHelper.connection);  // 查询命令  
                    DBHelper.connection.Open();  // 打开连接

                    count = (int)command.ExecuteScalar();  // 执行查询语句

                   
                    if (count == 1)
                    {
                        isValidUser = true;
                    }
                    else// 如果没有找到,则是非法用户
                    {
                        message = "用户名或密码不存在!";
                        isValidUser = false;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message); ;
                }
                finally
                {
                    DBHelper.connection.Close();  // 关闭数据库连接
                }
            }

            return isValidUser;
        }

  方法调用--btn_click
  private void btnLogIn_Click(object sender, EventArgs e)
        {
            bool isValidUser = false;   // 标识是否为合法用户
            string message = "";        // 如果登录失败,显示的消息提示

            // 如果验证通过,就显示相应的用户窗体,并将当前窗体设为不可见
            if (ValidateInput())
            {
                // 调用用户验证方法
                isValidUser = ValidateUser(
                    cboLogInType.Text,
                    txtLogInId.Text,
                    txtLogInPwd.Text,
                    ref message);

                // 如果是合法用户,显示相应的窗体
                if (isValidUser)
                {
                    // 将输入的用户名保存到静态变量中
                    UserHelper.loginId = txtLogInId.Text;
                    // 将选择的登录类型保存到静态变量中
                    UserHelper.loginType = cboLogInType.Text; 

                    ShowUserForm();  // 显示相应用户的主窗体

                    this.Visible = false;
                }
                // 如果登录失败,显示相应的消息
                else
                {
                    MessageBox.Show(message, "登录失败",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

 

 

 

 

 

 

 

    C#第七章
1.DataReader对象
  从数据库中读取信息在应用程序中显示
  DataReader对象所在的命名空间:System.Data.SqlClient
 
  DataReader对象的主要成员:
  属性:HasRows  是否返回了结果
  方法:Read()   前进到下一行记录
        Close()  关闭DataReader对象

  案例:从数据库中读取年级的数据显示在下拉框中
  步骤:在窗体的Load事件中:
  1)定义查询年级的sql语句
  2)打开数据库连接
  3)声明SqlCommand对象处理sql语句
  4)声明SqlDataReader对象调用读取方法读取数据
   SqlDataReader sdr = cmd.ExecuteReader();
  5)循环给下拉框中的每一项赋值填充
    while (sdr.Read())
    {
         gradename = Convert.ToString(sdr[0]);//循环读取表中数据
         cboGrade.Items.Add(gradename);//给控件中的项填充数据
    }
  6)关闭DataReader对象
  7)关闭连接对象


2.对数据进行增、删、改操作-ExecuteNonQuery()返回受影响的行数
  案例:新增学员信息
  1)获取控件中的值
    获取文本框的值:string uid=txtLoginId.Text;
    获取单选按钮上的值:string active = rdoActive.Checked ? (string)rdoActive.Tag : (string)rdoInactive.Tag;
    解释:单选按钮有Checked的方法,表示选中
    比较运算符 ?:相当于if-else结构判断
    表达式1?表达式2:表达式3
    判断表达式1的结果,结果为真,取表达式2为整个表达式最后结果,表达式1结果为假,就取表达式3为整个表达式最后结果
 
  2)定义sql语句
  3)打开数据库连接
  4)创建SqlCommand对象,处理sql语句
    SqlCommand command = new SqlCommand(sql, DBHelper.connection);
  5)执行command的ExecuteNonQuery()方法;
  6)关闭连接对象

3)ListView控件的使用
  属性:Columns 视图中显示的列
        SelectedItems 选中项的集合
        View 指定显示五种试图中的哪一种试图   
  方法:Clear() 移除ListView中所有的项

 

  案例:实现学员信息查询功能 支持模糊查询
  设置界面--设置ListView的属性
  FullRowSelect 选中listView中的一行
  View属性:Details
  Columns属性:编辑表头字段显示
  GridLines属性:试图中显示网格
  HeaderStyle:列表头显示的样式 Nonclickable为不可点击

  后台代码:在按钮的click事件中:
  1)定义变量保存用户名、姓名、学号、用户状态Id、用户状态
  2)定义sql语句 模糊查询
   string sql = string.Format("SELECT StudentID,LoginId,StudentNO,StudentName,UserStateId FROM Student WHERE LoginId like '%{0}%'", textBox1.Text);
  3)打开数据库连接
  4)定义SqlCommand对象
  5)定义SqlDataReader对象 调用ExecuteReader()方法
  6)清除ListView中所有的项listView1.Items.Clear();
  7)如果结果中没有数据行,就弹出提示,
if (!dataReader.HasRows)
                {
                    MessageBox.Show("抱歉,没有您要找的用户!", "结果提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
else//如果有结果集 循环读取出数据填充到ListView中
  while (dataReader.Read())
                    {
                        // 将从数据库中读取到的用户名、姓名、学号、用户状态赋给相应的变量
                        loginId = (string)dataReader["LoginId"];
                        studentName = (string)dataReader["StudentName"];
                        studentNO = (string)dataReader["StudentNO"];
                        userStateId = (int)dataReader["UserStateId"];
                        userState = (userStateId == 1) ? "活动" : "非活动";

                        ListViewItem lviStudent = new ListViewItem(loginId);//创建一个ListView项
                        lviStudent.Tag = (int)dataReader["StudentID"];  // 将ID放在Tag中
                        listView1.Items.Add(lviStudent); // 向ListView中添加一个新项
                        lviStudent.SubItems.AddRange(new string[] { studentName, studentNO, userState });//向当前项中添加子项
                    }


4.ContextMenuStrip控件的使用
  1)如何做到listView控件与ContextMenuStrip之间的关联?
    (可以在listView控件上右键显示菜单)
    设置listView控件的ContextMenuStrip属性为你拖的ContextMenuStrip控件的name名

5)总结第七章
  对数据库的增、删、改操作,连接数据库处理数据代码步骤:
  A.定义sql语句
  B.打开connection对象
  C.定义command对象处理sql语句
  D.定义command中的ExcuteNonQuery()方法
  E.关闭connection对象

对数据库的查询操作,连接数据库处理数据代码步骤:
  A.定义sql语句
  B.打开connection对象
  C.定义command对象处理sql语句
  D.定义sqlDataReader对象,调用command中的ExcuteReader方法
  E.关闭sqlDataReader对象
  F.关闭connection对象

 

   C#第八章
1.DataSet  数据集
  大量的数据需要查询时使用,DataSet是临时存储数据的地方
  创建一个DataSet对象:DataSet 对象名=new DataSet();
2.DataAdapter 数据适配器
  DataAdapter的主要属性和方法
  属性:SelectCommand从数据库检索数据的Command对象
  方法:Fill   向dataset中填充数据 
        update 将DataSet中的数据提交到数据库

  如何将数据库的数据存放到DataSet中?
  需要使用到DataAdapter进行填充
  创建DataAdapter对象:SqlDataAdapter 对象名 = 
         new SqlDataAdapter(查询用sql语句, 数据库连接);
  填充DataSet:DataAdapter对象名. Fill(DataSet对象名, "数据表名称字符串");

3.如何保存DataSet中的数据
  把数据集中修改的数据提交到数据源
  1)使用SqlCommandBuilder 对象能够自动生成:
    insert命令
    update命令
    delete命令
    语法:SqlCommandBuilder builder = new SqlCommandBuilder(已创建的DataAdapter对象);
  2)dataAdapter.Update(dataSet,"数据表名称字符串");

4.DataGridView 强大的数据展示控件
  特点:强大而灵活地显示数据
        轻松定义控件的外观
        像Excel表格一样方便
        一行代码实现数据绑定
        可视化操作

DataGridView 的重要属性
属性         说明
Columns  包含的列的集合
DataSource DataGridView 的数据源
ReadOnly 是否可以编辑单元格


DataGridView列中的主要属性:
DataPropertyName:绑定数据列的名称
HeaderText        列标题的文本
Visble            指定列是否可见
Frozen     指定水平线滚动DataGridView时列是否移动
ReadOnly   指定单元格是否为只读

一行代码实现数据绑定:DataGridView.DataSource方法
 
DataGridView.DataSource=dataSet.Tables["表名"];

以下代码可不抄
load事件中 DataGridView绑定数据
string sql = "select teacherid,loginid,loginpwd,teachername,sex,Birthday from teacher";
sda = new SqlDataAdapter(sql, DBHelper.connection);
sda.Fill(ds, "Teacher");
dataGridView1.DataSource = ds.Tables["Teacher"];

修改DataSet中的数据提交到数据库中
DialogResult dia = MessageBox.Show("确定要修改吗?", "提示",MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            if (dia == DialogResult.OK)
            {
                SqlCommandBuilder scb = new SqlCommandBuilder(sda);
                sda.Update(ds, "Teacher");
            }

实现刷新功能  刷新按钮click
dataSet.Tables["Teacher"].Clear();  // 清空原来的数据
dataAdapter.Fill(dataSet, "Teacher");   // 填充数据集

学生信息显示窗体  按照性别筛选功能 筛选按钮click
“筛选”按钮的 Click 事件处理,组合SQL语句,重新填充数据集
// 基本 SQL 语句
            string sql = "SELECT StudentId, LoginId, StudentName, StudentNO, Sex, Phone, Address, JobWanted FROM Student";

            // 根据组合框的选择组合 SQL 语句
            switch (cboSex.Text)
            {
                case "男":  // 增加性别为男的条件
                    sql += " WHERE Sex = '男'";
                    break;
                case "女": // 增加性别为女的条件
                    sql += " WHERE Sex = '女'";
                    break;
                default:   // 不做任何操作
                    break;
            }

            dataSet.Tables["Student"].Clear();
            // 重新指定 DataAdapter 对象的查询语句
            dataAdapter.SelectCommand.CommandText = sql;
            // 重新填充数据集
            dataAdapter.Fill(dataSet, "Student");
         

 

 

 

 

 

 


 
      
 
   

 

 


 

原创粉丝点击