DataAdapter更新两个数据源的问题

xinghf 2009-09-02 05:39:27
请问各位大侠
能不能通过DataAdapter将服务器中的数据表保存在本地数据库中
如将mysql数据库中的users表保存到本地access数据库中。
如何更新。
网上看到一段代码 vs.2008中实现不了
public static void InsertTab(string strDbPath, string TabName, DataTable dt)
{
OleDbConnection conn = Common.GetOleConn(strDbPath);
if (conn == null) return;
try
{
string sql = " select top 1 * from " + TabName;//获取一张空表
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataTable DestDt = ds.Tables[0];
if (DestDt.Rows.Count > 0) DestDt.Rows.Clear();
DestDt = dt;
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.Update(DestDt);
}
catch (Exception err)
{
MessageBox.Show("frmStantardPropertyTab->InsertInoTab" + "\r\n" + err.StackTrace);
}
finally
{
conn.Close();
conn.Dispose();
}
}
...全文
133 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
LutzMark 2009-09-22
  • 打赏
  • 举报
回复
可以用SQLBulkCopy
DataSet中的表结构需与目标库表结构相同
  public bool Import(DataSet ds)
{
SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;User ID=sa;Password=sa");
sqlconn.Open();

SqlBulkCopy sbc = new SqlBulkCopy(sqlconn);
sbc.DestinationTableName = ds.Tables[0].TableName;
//一次操作2000行
sbc.BatchSize = 2000;
//将数据集合和目标服务器的字段对应
for (int q = 0; q < ds.Tables[0].Columns.Count; q++)
{
sbc.ColumnMappings.Add(ds.Tables[0].Columns[q].ColumnName, ds.Tables[0].Columns[q].ColumnName);
}

try
{
sbc.WriteToServer(ds.Tables[0]);
}
catch (SqlException ex)
{
return false;

}
finally
{
ds.Dispose();
sqlconn.Close();
sbc.Close();
}
return true;

}
xinghf 2009-09-22
  • 打赏
  • 举报
回复
难道真的不能实现。
我的记录是一条一条的拷贝
字段也是一个一个拷
才能更新到数据库
xinghf 2009-09-03
  • 打赏
  • 举报
回复
copy也不行
xinghf 2009-09-02
  • 打赏
  • 举报
回复
原文在
http://topic.csdn.net/u/20080103/13/55f8a36f-5e1f-4635-a7e6-8993c9353b43.html
说是能行,我实现不了。
mygisforum 2009-09-02
  • 打赏
  • 举报
回复
DestDt = dt; 就算表结构完全一致也不能这样写吧。 DataTable似乎是个址传递的类型吧

好像只能乖乖地把 dt 中的数据一行行的加到 DestDt 中更新才行

xinghf 2009-09-02
  • 打赏
  • 举报
回复
逐条记录插入确实可以,难道不能整表更新?
hanjinkai 2009-09-02
  • 打赏
  • 举报
回复
关注 学习中
xinghf 2009-09-02
  • 打赏
  • 举报
回复
直接dataset.load?
mythad 2009-09-02
  • 打赏
  • 举报
回复
应该是用Adapter连接Access,Fill一个DataSet,然后把另一个数据源中的数据数据Load到DataSet中然后Update()就可以了。
soldierluo 2009-09-02
  • 打赏
  • 举报
回复
从服务器读出来再一条条的插入到本地的数据库中不就可以了吗
xinghf 2009-09-02
  • 打赏
  • 举报
回复
表结构完全一致

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧