把握当下

不积跬步无以成千里,不积细流无以成江河。骐骥一跃,不能十步;驽马十驾,功在不舍。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

1、读取数据库内容,使用dataset的XmlReader类写入XML文件。

/********************************************/
/* 读数据库写入XML */
/********************************************/
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection("server = localhost;uid=sa;pwd=123;database=gq");
conn.Open();
SqlCommand comm = null;
comm = new SqlCommand(@"SELECT * FROM Table_2", conn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = comm;
da.Fill(ds, "Table_2");
//this.richTextBox1.Text=ds.GetXml();
ds.WriteXml(@"C://a.xml", XmlWriteMode.WriteSchema);
注:本代码为最简单代码,需要增加异常处理。
2、读取XML,是用Dataset写入数据库,或显示在DataGridView中
/***************************************/
/* 读XML文件,也可使用DataTable */
/***************************************/
DataSet dsEx = new DataSet();
dsEx.ReadXml(@"c:\a.xml", XmlReadMode.ReadSchema);

////////////////////////////////////////////////////
// 写入数据库 //
////////////////////////////////////////////////////
SqlConnection conn = new SqlConnection("server = localhost;uid=sa;pwd=123;database=gq");
conn.Open();
string tabname = "Table_3";
string seleStr = "SELECT name, old, jg, dd FROM dbo.Table_3";
/*string sqlquery = @"UPDATE [dbo].[Table_3] SET [name] = @name, [old] = @old, [jg] = @jg, [dd] = @dd WHERE (((@IsNull_name = 1 AND [name] IS NULL) OR ([name] = @Original_name)) AND ([old] = @Original_old) AND ((@IsNull_jg = 1 AND [jg] IS NULL) OR ([jg] = @Original_jg)) AND ((@IsNull_dd = 1 AND [dd] IS NULL) OR ([dd] = @Original_dd)));
SELECT name, old, jg, dd FROM Table_3 WHERE (old = @old)";*///
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand(seleStr,conn);
// sda.UpdateCommand = new SqlCommand(sqlquery,conn);
new SqlCommandBuilder(sda);

sda.Fill(dsEx,tabname);
dsEx.Tables[1].Merge(dsEx.Tables[0]);
sda.Update(dsEx, tabname);
//dsEx.AcceptChanges();
//this.dataGridView1.DataSource = dsEx.Tables[1].DefaultView;//显示到datagridview中
// this.richTextBox1.Text = dsEx.Tables[1].TableName.ToString();
//sda.a
conn.Close();
conn.Dispose();
/*
总结:
1、dataset就是数据表在内存中的映射集合,每个dataset中有多个表映射。
2、AqlDataAdapter是链接dataset与数据库的纽带
3、AqlDataAdapter要执行的SQL语句由SelectCommand,UpdateCommand等实现,而他们由SqlCommand赋值,最后由SqlCommandBuilder来建立
4、Fill方法将得到的表映射到dataset中,于是,dataset的表集合中就增加了一个,表的名字可以用 【Dataset对象】.Tables[n].TableName取得。其中n是表在dataset中的序号。
5、以上代码为最简练代码,需要增加相关语句,以便使之健壮。
6、dataset为对象操作模式,他吧整个表都读进来,增加了内存占用,但便于提高查询速度,便于使用XmlPath操作。
7、 DataReader为流模式,单向快速想前,站内存少。
注:直接将本代码段粘到程序中即可调试,但本代码为最简单代码,需要增加异常处理。

*/

posted on 2008-12-10 14:13  刀锋战士  阅读(2728)  评论(0编辑  收藏  举报