• 使用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数据集中的数据进行数据更新。

  • 相关阅读:
    异或运算实现两数交换
    安装Keepalived namespaces.c:187: error: ‘SYS_setns’ undeclared (first use in this function)
    安装keepalived OpenSSL is not properly installed on your system. !!!
    jackson json转实体对象 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
    solr集群Server refused connection at: http://127.0.0.1:6060/solr/ego 注册zookeepr自动使用内网ip
    Solr java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect to this MySQL server
    Jackson中@JsonProperty等常用注解
    java.lang.ClassNotFoundException: XXX (no security manager: RMI class loader disabled)
    ActiveMQ学习总结------Spring整合ActiveMQ 04
    为什么嵌入式开发用memcpy()而不用strncpy()
  • 原文地址:https://www.cnblogs.com/zywf/p/4605247.html
Copyright © 2020-2023  润新知