c# 用dataset实现XML与数据库的数据交换

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为流模式,单向快速想前,站内存少。
注:直接将本代码段粘到程序中即可调试,但本代码为最简单代码,需要增加异常处理。

*/

转载于:https://www.cnblogs.com/rzwince/archive/2008/12/10/1351898.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值