ADO.Net中DataTable的应用(知识点描述、思维导图、示例代码、效果截图)

在我们编写代码的时候从数据库里取出数据,填充到dataset里,再根据表的名字,实例化到 DataTable 中。下面是 Ado.Net 关系:Connection_____Command____DataAdapter____Dataset  _____Datareader

ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源。

一、思维导图:

二、知识点描述:

Data Table的构造函数:

编号

构造函数

描述

1

DataTable()

它用于初始化没有参数的DataTable类的新实例。

2

DataTable(String)

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

3

DataTable(SerializationInfo, StreamingContext)

它用于使用SerializationInfoStreamingContext初始化DataTable类的新实例。

4

DataTable(String, String)

它用于使用指定的表名和名称空间初始化DataTable类的新实例。

属性:

编号

属性

描述

1

Columns

它用于获取属于此表的列的集合。

2

Constraints

它被用来获取由这个表维护的约束的集合。

3

DataSet

它用于获取此表所属的DataSet

4

DefaultView

它用于获取可能包含过滤视图的表的自定义视图。

5

HasErrors

它用于获取指示DataSet表中的任何行中是否存在错误的值。

6

MinimumCapacity

它用于获取或设置此表的初始起始大小。

7

PrimaryKey

它用于获取或设置一个用作数据表主键的列数组。

8

Rows

它用于获取属于此表的行的集合。

9

TableName

它用于获取或设置DataTable的名称。

创建对象:

       创建方法有两种:1.使用DataTable类的构造函数创建DataTable对象 

DataTable table = new DataTable( )

                                    2.调用DataSet的Tables对象的Add方法创建DataTable对象

DataSet dataset = new dataSet( );

DataTable table = dataset.Tables.Add(“MyTableName”);

       在DataTable对象中添加列:调用DataTable对象的Column中的Add方法添加列

       在DataTable对象中创建行:由于DataTable对象的每一行都是一个DataRow对象,所以创建行时可以利用DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对象添加到表中

        将SQL Server数据库中的表填充到DataTable对象中:有两种方式:

              1.使用fill方法填充DataTable

private void useDataTableByFill()
    {
        SqlConnection myConnection = newSqlConnection(ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString);
        DataTable myDataTable = new DataTable();
        SqlDataAdapter myDp = newSqlDataAdapter("select * from authors", myConnection);
        myDp.Fill(myDataTable);
        GridView1.DataSource =myDataTable.DefaultView;
        GridView1.DataBind();
        
        myConnection.Dispose();
        myDp.Dispose();       
    }

   2.使用使用DataReader方法:

 private void useDataTableByDataReader()
    {
        SqlConnection myConnection = newSqlConnection(ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString);
        DataTable myDataTable = new DataTable();
        SqlCommand myCommand = newSqlCommand("select * from authors", myConnection);
        myConnection.Open();
        SqlDataReader dr =myCommand.ExecuteReader(CommandBehavior.CloseConnection);
        myDataTable.Load(dr);
        GridView1.DataSource =myDataTable.DefaultView;
        GridView1.DataBind();
        dr.Close();
        dr.Dispose();
        myCommand.Dispose();               
    }

三、示例代码:

 SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            this.CourseTable = new DataTable();                                                             //实例化本窗体的课程数据表,用于保存所有课程,以用作数据网格视图数据源;
            this.CourseTable.TableName = "StudentScore";                                                    //设置课程数据表的表名;由于该查询访问多张表,数据适配器无法自动指定表名,故需手动指定表名;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(this.CourseTable);                                                          //SQL数据适配器读取数据,并只将架构填充至课程数据表;
            DataColumn rowIdColumn = new DataColumn();                                                      //声明并实例化数据列,用于保存行编号;
            rowIdColumn.ColumnName = "RowID";                                                               //设置数据列的名称;
            rowIdColumn.DataType = typeof(int);                                                             //设置数据列的类型;类型需借助typeof获取;
            rowIdColumn.AutoIncrement = true;                                                               //设置数据列为自增列;
            rowIdColumn.AutoIncrementSeed = 1;                                                              //设置数据列的自增种子为1;
            rowIdColumn.AutoIncrementStep = 1;                                                              //设置数据列的自增步长为1;
            this.CourseTable.Columns.Add(rowIdColumn);                                                      //数据列加入本窗体的课程数据表的列集合;
            sqlCommand.CommandText =
                "SELECT S.No,S.Name AS SName,C.Name AS CName,SS.TotalScore"
                + " FROM tb_Student AS S "
                + " JOIN tb_StudentScore AS SS ON S.No=SS.StudentNo"
                + " JOIN tb_Course AS C ON SS.CourseNo=C.No;";                                              //指定SQL命令的命令文本;该命令查询所有学生成绩;
            sqlDataAdapter.Fill(this.CourseTable);                                                          //SQL数据适配器读取数据,并填充课程数据表;
            sqlConnection.Close();

  

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 =
                "INSERT tb_CourseSelection(StudentNo,CourseNo,OrderBook)"
                + "VALUES(@StudentNo,@CourseNo,@OrderBook);";                                               //指定SQL命令的命令文本;该命令插入选课记录;
            insertCommand.Parameters.AddWithValue("@StudentNo", "3120707001");                              //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
            insertCommand.Parameters.Add("@CourseNo", SqlDbType.Char, 4, "No");
            insertCommand.Parameters.Add("@OrderBook", SqlDbType.Bit, 0, "OrderBook");
            SqlCommand updateCommand = new SqlCommand();                                                    //声明并实例化用于更新(教材订购状态)的SQL命令;
            updateCommand.Connection = sqlConnection;                                                       //将SQL命令的连接属性指向SQL连接;
            updateCommand.CommandText =                                                                     //指定SQL命令的命令文本;该命令更新教材订购状态;
                "UPDATE tb_CourseSelection"
                    + " SET OrderBook=@OrderBook"
                    + " WHERE StudentNo=@StudentNo AND CourseNo=@CourseNo;";
            updateCommand.Parameters.AddWithValue("@StudentNo", "3120707001");                              //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
            updateCommand.Parameters.Add("@CourseNo", SqlDbType.Char, 4, "No");
            updateCommand.Parameters.Add("@OrderBook", SqlDbType.Bit, 0, "OrderBook");
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.InsertCommand = insertCommand;                                                   //将SQL数据适配器的插入命令属性指向SQL命令;
            sqlDataAdapter.UpdateCommand = updateCommand;                                                   //将SQL数据适配器的更新命令属性指向SQL命令;
            sqlConnection.Open();                                                                           //打开SQL连接;
            int rowAffected = sqlDataAdapter.Update(this.SelectedCourseTable);                              //SQL数据适配器根据学生数据表提交更新,并返回受影响行数;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            MessageBox.Show("插入" + rowAffected.ToString() + "行。"); 

  

 

 

 

转载于:https://www.cnblogs.com/nicestlala/p/9858411.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值