第七周学习笔记——ADO.Net中DataTable的应用

本文深入探讨ADO.Net中DataTable的使用,详细介绍了其构造函数、属性和事件,通过实例展示了如何利用DataTable从数据库加载数据、提交更新,适用于数据库操作的学习者。

第七周学习笔记——ADO.Net中DataTable的应用

  • 思维导图

 

  • datatable相关属性
  • 名称

    说明

     

     

    DataTable()

    不带参数初始化 DataTable 类的新实例。

     

    DataTable(String)

    用指定的表名初始化 DataTable 类的新实例。

     

    DataTable(SerializationInfo, StreamingContext)

    使用 SerializationInfo 和 StreamingContext 初始化 DataTable 类的新实例。

     

    DataTable(String, String)

    用指定的表名和命名空间初始化 DataTable 类的新实例。

    名称

    说明

     

     

    CaseSensitive

    指示表中的字符串比较是否区分大小写。

     

    ChildRelations

    获取此 DataTable 的子关系的集合。

     

    Columns

    获取属于该表的列的集合。

     

    Constraints

    获取由该表维护的约束的集合。

     

    Container

    获取组件的容器。 (继承自 MarshalByValueComponent。)

     

    DataSet

    获取此表所属的 DataSet。

     

    DefaultView

    获取可能包括筛选视图或游标位置的表的自定义视图。

     

    DesignMode

    获取指示组件当前是否处于设计模式的值。 (继承自 MarshalByValueComponent。)

     

    DisplayExpression

    获取或设置一个表达式,该表达式返回的值用于表示用户界面中的此表。 DisplayExpression 属性用于在用户界面中显示此表的名称。

     

    Events

    获取附加到该组件的事件处理程序的列表。 (继承自 MarshalByValueComponent。)

     

    ExtendedProperties

    获取自定义用户信息的集合。

     

    HasErrors

    获取一个值,该值指示该表所属的 DataSet 的任何表的任何行中是否有错误。

     

    IsInitialized

    获取一个值,该值指示是否已初始化 DataTable。

     

    Locale

    获取或设置用于比较表中字符串的区域设置信息。

     

    MinimumCapacity

    获取或设置该表最初的起始大小。

     

    Namespace

    获取或设置 DataTable 中所存储数据的 XML 表示形式的命名空间。

     

    ParentRelations

    获取该 DataTable 的父关系的集合。

     

    Prefix

    获取或设置 DataTable 中所存储数据的 XML 表示形式的命名空间。

     

    PrimaryKey

    获取或设置充当数据表主键的列的数组。

     

    RemotingFormat

    获取或设置序列化格式。

     

    Rows

    获取属于该表的行的集合。

     

    Site

    获取或设置 DataTable 的 System.ComponentModel.ISite。 (重写 MarshalByValueComponent.Site。)

     

    TableName

    获取或设置 DataTable 的名称。

    DataTable 事件

     

    名称

    说明

     

    ColumnChanged

    在 DataRow 中指定的 DataColumn 的值被更改后发生。

     

    ColumnChanging

    在 DataRow 中指定的 DataColumn 的值发生更改时发生。

     

    Disposed

    添加事件处理程序以侦听组件上的 Disposed 事件。 (继承自 MarshalByValueComponent。)

     

    Initialized

    初始化 DataTable 后发生。

     

    RowChanged

    在成功更改 DataRow 之后发生。

     

    RowChanging

    在 DataRow 正在更改时发生。

     

    RowDeleted

    在表中的行已被删除后发生。

     

    RowDeleting

    在表中的行要被删除之前发生。

     

    TableCleared

    清除 DataTable 后发生。

     

    TableClearing

    清除 DataTable 后发生。

     

    TableNewRow

    插入新 DataRow 时发生。

     

  • 代码实现
  • using System;

    using System.Data;

    using System.Data.SqlClient;                                                                                //包含访问SQL Server所需的各类对象;

    using System.Windows.Forms;

     

    namespace Ex51_Table_Adapter

    {

        

        public partial class frm_StudentTable : Form

        {

     

            /// <summary>

            /// 公有方法:构造函数;

            /// </summary>

            public frm_StudentTable()

            {

                InitializeComponent();

                this.StartPosition = FormStartPosition.CenterScreen;                                            //本窗体启动位置设为屏幕中央;

            }

     

            /// <summary>

            /// 私有方法:点击载入按钮;

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void btn_Load_Click(object sender, EventArgs e)

            {

                SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;

                sqlConnection.ConnectionString =

                    "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);

                SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;

                sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;

                sqlCommand.CommandText = "SELECT * FROM tb_Student;";                                           //指定SQL命令的命令文本;该命令查询所有学生;

                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;

                sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;

                DataTable studentTable = new DataTable();                                                       //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;

                sqlConnection.Open();                                                                           //打开SQL连接;

                sqlDataAdapter.Fill(studentTable);                                                              //SQL数据适配器读取数据,并填充学生数据表;

                sqlConnection.Close();                                                                          //关闭SQL连接;

                this.dgv_Score.DataSource = studentTable;                                                       //将数据网格视图的数据源设为学生数据表;

            }

            

            /// <summary>

            /// 私有方法:点击提交按钮;

            /// </summary>

            /// <param name="sender"></param>

            /// <param name="e"></param>

            private void btn_Submit_Click(object sender, EventArgs e)

            {

                SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;

                sqlConnection.ConnectionString =

                    "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);

                SqlCommand insertCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于插入记录;

                insertCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;

                insertCommand.CommandText =                                                                     //指定SQL命令的命令文本;

                    "INSERT tb_Student"

                    + "(No,Name,Gender,BirthDate,Class,Speciality)"

                    + " VALUES(@No,@Name,@Gender,@BirthDate,@Class,@Speciality);";

                insertCommand.Parameters.Add("@No", SqlDbType.Char, 10, "No");                                  //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;

                insertCommand.Parameters.Add("@Name", SqlDbType.VarChar, 0, "Name");                                 

                insertCommand.Parameters.Add("@Gender", SqlDbType.VarChar, 0, "Gender");

                insertCommand.Parameters.Add("@BirthDate", SqlDbType.VarChar, 0, "BirthDate");

                insertCommand.Parameters.Add("@Class", SqlDbType.VarChar, 0, "Class");

                insertCommand.Parameters.Add("@Speciality", SqlDbType.VarChar, 0, "Speciality");

                SqlCommand updateCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于更新记录;

                updateCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;

                updateCommand.CommandText =                                                                     //指定SQL命令的命令文本;

                    "UPDATE tb_Student"

                    + " SET No=@NewNo,Name=@Name,Gender=@Gender,BirthDate=@BirthDate,Class=@Class,Speciality=@Speciality"

                    + " WHERE No=@OldNo;";

                updateCommand.Parameters.Add("@NewNo", SqlDbType.Char, 10, "No");                               //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;

                updateCommand.Parameters.Add("@Name",SqlDbType.VarChar,0,"Name");                              

                updateCommand.Parameters.Add("@Gender", SqlDbType.VarChar, 0, "Gender");

                updateCommand.Parameters.Add("@BirthDate", SqlDbType.VarChar, 0, "BirthDate");

                updateCommand.Parameters.Add("@Class", SqlDbType.VarChar, 0, "Class");

                updateCommand.Parameters.Add("@Speciality", SqlDbType.VarChar, 0, "Speciality");

                updateCommand.Parameters.Add("@OldNo", SqlDbType.Char, 10, "No");                               //若学号发生更改,则还需提供旧学号,以便查询要更改的行;

                updateCommand.Parameters["@OldNo"].SourceVersion = DataRowVersion.Original;                     //旧学号的来源版本,为数据行版本中的原始值;

                SqlCommand deleteCommand = new SqlCommand();                                                    //声明并实例化SQL命令;该命令用于删除;

                deleteCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;

                deleteCommand.CommandText =                                                                     //指定SQL命令的命令文本;

                    "DELETE tb_Student"

                    + " WHERE No=@No;";

                deleteCommand.Parameters.Add("@No", SqlDbType.Char, 10, "No");

                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;

                sqlDataAdapter.InsertCommand = insertCommand;                                                   //将SQL数据适配器的属性InsertCommand指向用于插入记录的SQL命令;

                sqlDataAdapter.UpdateCommand = updateCommand;                                                   //将SQL数据适配器的属性UpdateCommand指向用于更新记录的SQL命令;

                sqlDataAdapter.DeleteCommand = deleteCommand;                                                   //将SQL数据适配器的属性DeleteCommand指向用于删除记录的SQL命令;

                DataTable studentTable = (DataTable)this.dgv_Score.DataSource;                                  //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;

                sqlConnection.Open();                                                                           //打开SQL连接;

                int rowAffected = sqlDataAdapter.Update(studentTable);                                          //SQL数据适配器根据学生数据表提交所有更新,并返回受影响行数;

                sqlConnection.Close();                                                                          //关闭SQL连接;

                MessageBox.Show("更新" + rowAffected.ToString() + "行。");                                      //在消息框显示受影响行数;

           

     

    实现结果

 

源码链接: https://pan.quark.cn/s/dbe32f6bace6 在本指南中,我们将详细解析如何在银河麒麟v10操作系统平台上完成MySQL 5.7的安装过程。银河麒麟v10作为一个基于Linux内核的国产操作系统,特别适用于arm架构的aarch64计算平台。鉴于我们讨论的是免编译的安装方法,这意味着我们将借助预先编译好的二进制软件包来简化操作步骤,而非采用从源代码开始的编译方式。 ### 一、前期准备 1. **系统更新**: 在部署任何新软件之前,务必确保操作系统处于最新状态,此举旨在规避潜在的兼容性挑战和已知的安全隐患。 ``` sudo apt-get update sudo apt-get upgrade ``` 2. **依赖安装**: MySQL 5.7版本在运行时可能需要特定的库文件支持,比如libaio和jemalloc。在银河麒麟v10环境中,可以通过以下指令来安装这些必需的依赖项: ``` sudo apt-get install libaio1 libaio-dev jemalloc-dev ``` ### 二、获取MySQL 5.7二进制文件 由于银河麒麟v10运行在arm架构之上,因此需要寻找适配aarch64架构的MySQL 5.7二进制文件。这些文件可从MySQL的官方发布渠道或授权的第三方镜像站点获取。务必确认下载的文件名与压缩包内的内容一致。例如,文件名应为`mysql-5.7.37-linux-glibc2.17-arm64.tar.gz`。 ### 三、部署MySQL 5.7 1. **文件解压缩**: 将下载的MySQL压缩文件解压至一个指定目录,例如 `/usr/local/`。 ``` tar...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 Node.js 是一种开放源代码且能够在多种操作系统上运行的 JavaScript 执行环境,它使得开发人员能够在服务器端执行 JavaScript 代码。Node.js 采用了 V8 引擎,该引擎是由 Google 为 Chrome 浏览器开发的一个高性能的 JavaScript 解释器。Node.js 的 16.x 版本在其发展历程中占据着重要位置,其中包含了众多新功能以及性能上的改进。标题 "Nodejs16-x64 windows安装包" 指向的是专为 Windows 操作系统设计的 64 位版本的 Node.js 16 安装程序。在 Windows 平台上安装 Node.js 的 64 位版本对于处理大量数据或运行需要高性能的应用程序来说尤为关键,因为 64 位系统能够更有效地利用硬件资源。描述 "Nodejs-16 x64位windows 安装包" 明确了该安装程序是为 Windows 用户准备的,特别是对于那些需要运行 64 位应用程序的用户。x64 表明该版本兼容 64 位架构,意味着它能够充分利用 64 位计算机的内存和处理能力。标签 "Node Nodejs nodejs16" 提供了关于此安装包的核心信息,表明它与 Node.js 相关,并且具体指的是 v16 版本。这些标签有助于进行搜索和分类,从而方便用户找到他们所需要的特定版本。压缩包文件 "node-v16.18.0-x64.msi" 代表实际的安装文件,其中 "v16.18.0" 指示了 Node.js 的具体版本号,"x64" 再次强调了其适用于 64 位系统,而 ".msi" 后缀表明这是一...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值