一个笨办法(目前好像也就是这么一个办法了):
1. 先用select * from yourTable where 1=0获取一个DataSet1,(注:一定要在Fill之前先绑定一个CommandBuilder)
2. 将你的DataSet中的数据逐个Add到1中生成的DataSet中
3. 用1中生成的myAdapter.Update(DataSet1);
4. Close connection就可以了!
1. 先用select * from yourTable where 1=0获取一个DataSet1,(注:一定要在Fill之前先绑定一个CommandBuilder)
2. 将你的DataSet中的数据逐个Add到1中生成的DataSet中
3. 用1中生成的myAdapter.Update(DataSet1);
4. Close connection就可以了!
解决方案 »
- 请问在Exrpess Blend中如何实现按钮跳转到下一页?
- aspx页面在程序运行时 更改后无效,需要退出程序重新运行才可以看到效果?
- C# 小问题。
- 怎样向程序集中添加或代替资源?
- ASP.NET 访问 Oracle 数据库的问题,高手进,急急急,在线等
- 怎样将WINDOWS消息回调函数WndProc封装到一个类中?
- 请问怎样得到默认系统目录下的的文件路径如c:\winnt,急,,在线等待....
- ICON资源处理问题
- 日期控件插入数据库-从字符串向 datetime 转换时失败
- mm急救急急急!分全加上了,请教如何在英文版的WIN98上运行C#程序?
- 在C#中new出一个变量(比如数组),如何释放?
- 刷新问题,急!
你的描述是对的,我给你的建议只是希望你将其具体实现不要完全放在WEB SERVICE端(而是将web service作为一个接口来看待),如果你以后在这一块的实现逻辑或优化这块的时候你就可以独立来更新维护这块,即瘦web service中business process,而这里bp编译后是形成DLL文件的,这样对你今后的可维护要更好,
瘦web service中business process
我的意思是瘦web service(作为接口,现在很多人都将BP封装在了这块,实际上这是一种不值得推荐的处理方式,个人观点,呵呵),胖business process,当然你要根据自己的系统设计做负载的平衡,具体的自己把握。一家之谈啊,:)
对了,前面的 project()老兄说的方法我试过了,还是不能保存,并且现在的问题不是要UPDATE的DataSet没有数据,而是里面的数据根本没有保存回数据源----本地的MSDE数据库。代码如下:
//dsRemote是从Web Services取得的DataSet
DataSet dsTemp=new DataSet();
strSql="Select * from " + strTableName ;
SqlCommand myCommand = new SqlCommand(strSql,objCn);
SqlDataAdapter myAdapter=new SqlDataAdapter(myCommand);
SqlCommandBuilder myCommandB=new SqlCommandBuilder(myAdapter);
myAdapter.InsertCommand =myCommandB.GetInsertCommand(); //objAdapter=new SqlDataAdapter(strSql,objCn);
myAdapter.Fill(dsTemp,strTableName);
//dsTemp.Merge(dsRemote);
foreach(DataRow dr in dsRemote.Tables[0].Rows)
{
DataRow row=dsTemp.Tables [strTableName].NewRow();
row.ItemArray=dr.ItemArray;
dsTemp.Tables [strTableName].Rows.Add(row);
}
dsTemp.AcceptChanges();
myAdapter.Update(dsTemp,strTableName);
数据始终保存不到数据库中。
DataSet dsTemp=new DataSet();
strSql="Select * from " + strTableName ;SqlCommand myCommand = new SqlCommand(strSql,objCn);
SqlDataAdapter myAdapter=new SqlDataAdapter(myCommand);
SqlCommandBuilder myCommandB=new SqlCommandBuilder(myAdapter);
myAdapter.InsertCommand =myCommandB.GetInsertCommand();//objAdapter=new SqlDataAdapter(strSql,objCn);
myAdapter.Fill(dsTemp,strTableName);
//dsTemp.Merge(dsRemote);
foreach(DataRow dr in dsRemote.Tables[0].Rows)
{
DataRow row=dsTemp.Tables [strTableName].NewRow();
row.ItemArray=dr.ItemArray;
dsTemp.Tables [strTableName].Rows.Add(row);
}
dsTemp.AcceptChanges();
myAdapter.Update(dsTemp,strTableName);
// {
// DataRow row=dsTemp.Tables[strTableName].NewRow();
// row.ItemArray=dr.ItemArray;
// dsTemp.Tables[strTableName].Rows.Add(row);
// }
先从源DS将数据ADD到目标DS,然后再UPDATE,再AcceptChanges();
顺序最重要