asp.net使用DataSet数据集插入记录

来源:互联网 发布:高性能笔记本 知乎 编辑:程序博客网 时间:2024/06/06 13:20

http://blog.csdn.net/beyondqd/article/details/6724778

http://blog.163.com/da7_1@126/blog/static/1040726782011101101344439/


Dataset 并不是Recordset的简单翻版。从一定的意义上来说,DataView更类似于Recordset。如果说DataReader是访问数据的最容易的方式,那么Dataset则是最完整的数据访问对象。通过Dataset,你可以操作已有的数据,还可以通过程序创建Dataset,加入Table到Dataset,并建立这些Table之间的关系。

使用Dataset的几个步骤

第1步,创建到数据源的连接:

SQLConnection con =new SQLConnection("server=localhost;uid=sa;pwd=;database=pubs");

第2步,创建DataSetCommand对象,指定一个存储过程的名字或者一个SQL语句,指定数据链路;

SQLDataSetCommand cmd =new SQLDataSetCommand("SELECT * FROM Authors", con);

第3步,创建一个Dataset对象

DataSet ds = new DataSet();

第4步,调用DataSetCommand的FillData方法,为Dataset填充数据。注意:数据链路没有必要是打开的。如果数据链路是关闭状态,FillData函数会打开它,并在FillData之后关闭数据链路。如果数据链路本来就是打开的,在FillData之后,数据链路依然保持打开状态。

int iRowCount = cmd.FillDataSet(ds, "Authors");

第5步,操作数据。由于FillData返回了记录的个数,我们可以构造一个循环,来操纵Dataset中的数据。

for(int i=0; i< iRowCount; i++){
DataRow dr = ds.Tables[0].Rows[i];
Console.WriteLine(dr["au_lname"]);

  str=Request.QueryString["str"].ToString();      //  Response.Write(str);        string conn = "Data Source=qinzc.com;User ID=qzc;Password=qzc@dmin;DataBase=qin;Charset=utf8;";        MySqlConnection con = new MySqlConnection(conn);        con.Open();        MySqlCommand cmd = new MySqlCommand("select * from books where name like '%"+str+"%';", con);        // MySqlDataAdapter dr = cmd.Ex        //MySqlDataReader dr = cmd.ExecuteReader();        MySqlDataAdapter myadater = new MySqlDataAdapter(cmd);        DataSet ds = new DataSet();        myadater.Fill(ds, "ds");                listview1.DataSource = ds;       listview1.DataBind();        //ds.Close();        con.Close();



---------------------------------------------------------------------------------------------------------------------------------------------------------


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

(1) 创建一个Connection对象。

(2)创建一个DataAdapter对象。

(3) 初始化适配器。

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

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

(6)将数据行的字段设置为插入的值。

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

(8)DataAdapter类的InsertCommand属性设置成需要插入记录的INSERT语句。

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

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



0 0
原创粉丝点击