使用DataSet数据集插入记录

使用INSERT语句能够完成数据插入,使用DataSet对象也可以完成数据插入。为了将数据库的数据填充到DataSet中,则必须先使用DataAdapter对象的方法实现填充,当数据填充完成后,开发人员可以将记录添加到DataSet对象中,然后使用Update方法将记录插入数据库中。使用DataSet更新记录的步骤如下所示:

q  创建一个Connection对象。

q  创建一个DataAdapter对象。

q  初始化适配器。

q  使用数据适配器的Fill方法执行SELECT命令,并填充DataSet。

q  使用DataTable对象提供的NewRow方法创建新行。

q  将数据行的字段设置为插入的值。

q  使用DataRowAdd类的Add方法将数据行添加到数据表中。

q  把DataAdapter类的InsertCommand属性设置成需要插入记录的INSERT语句。

q  使用数据适配器提供的Update方法将新记录插入数据库。

q  使用DataSet类提供的AcceptChanges方法将数据库与内存中的数据保持一致。

当使用DataSet插入记录前,需要创建Connection对象以保证数据库连接,示例代码如下所示。

            string str = "server='(local)';database='mytable';uid='sa';pwd='sa'";                           //创建连接字串

            SqlConnection con = new SqlConnection(str);                                                             //创建连接对象

            con.Open();                                                                                                                           //打开连接

上述代码创建了一个数据库连接,并打开了数据库连接。完成数据连接后,就需要查询表中的数据并使用DataAdapter对象初始化适配器,示例代码如下所示。

            string strsql = "select * from mynews";                                                                            //编写SQL语句

            SqlDataAdapter da = new SqlDataAdapter(strsql, con);                                                       //创建适配器

DataAdapter对象默认构造函数包括两个参数,其中一个参数是需要执行的SQL语句,另一个是Connection对象。在初始化适配器后,需要对适配器的相应的属性做设置,使用SqlCommandBuilder对象可以让系统构造InsertCommand属性,示例代码如下所示。

            SqlCommandBuilder build = new SqlCommandBuilder(da);                                             //构造SQL语句

使用适配器的Fill方法能够填充DataSet数据集,示例代码如下所示。

            DataSet ds = new DataSet();                                                                                             //创建数据集

            da.Fill(ds, "datatable");                                                                                                       //填充数据集

            DataTable tb = ds.Tables["datatable"];                                                                            //创建表

            tb.PrimaryKey = new DataColumn[] { tb.Columns["id"] };                                            //创建表的主键

上述代码创建了一个DataSet数据集对象,被填充数据后,数据集中表的名称被命名为datatable,该命名与数据库中的表的名称并不冲突。填充了DataSet数据对象后,需要使用DataRow对象为DataSet添加数据,示例代码如下所示。

            DataRow row = ds.Tables["datatable"].NewRow();                                                       //创建DataRow

            row["title"] = "使用DataSet插入新行";                                                                              //赋值新列

            row["id"] = "15";

上述代码使用了NewRow方法创建新行返回DataRow对象,当DataRow对象中的相应的元素被赋值后,则需要使用Rows.Add方法增加新行,因为只对DataRow对象赋值,并不能自动的在数据库中增加新行。示例代码如下所示。

            ds.Tables["datatable"].Rows.Add(row);                                                                                    //添加新行

上述代码将数据更新到DataSet数据集中,为了保持数据集中的数据和数据库的数据的一致性,需使用Update方法,示例代码如下所示。

            da.Update(ds, "datatable");                                                                                               //更新数据

当执行了Update方法后,数据库中的数据就会同步DataSet数据集中的数据进行数据更新。

原文地址:https://www.cnblogs.com/zywf/p/4605247.html