第七周学习笔记——ADO.Net中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() + "行。");                                      //在消息框显示受影响行数;

           

     

    实现结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值