SqldataAdapter.Update(DataTable)无法更新数据源问题

datahandler 2010-01-08 04:30:59

//做一个同步数据表问题
SqlConnection LocalConnection = null;

try
{

DataTable LocalTable = new DataTable();
SqlDataAdapter UpdateAdapter = new SqlDataAdapter();

LocalConnection = new SqlConnection();
SqlCommand SelectCommand = new SqlCommand();
SqlCommand UpdateCommand = new SqlCommand();
SqlCommand InsertCommand = new SqlCommand();


LocalConnection.ConnectionString = config.LocalConnection;


SelectCommand.CommandText = "Select * From QuoteTableName";
SelectCommand.CommandType = CommandType.Text;
SelectCommand.Connection = LocalConnection;

UpdateCommand.CommandText = "Update QuoteTableName Set Field1=@Field1,Field2=@Field2 Where PramyKey=@PramyKey";
UpdateCommand.CommandType = CommandType.Text;
UpdateCommand.Connection = LocalConnection;

InsertCommand.CommandText = "Insert Into QuoteTableName Values(@PramyKey,@Field1,@Field2)";
InsertCommand.CommandType = CommandType.Text;
InsertCommand.Connection = LocalConnection;

SqlParameter parameter1=new SqlParameter("@field1",SqlDbType.NVarchar,8,"field1");
InsertCommand.Parameters.Add(parameter1);
UpdateCommand.Parameters.Add(parameter1);

SqlParameter parameter2=new SqlParameter("@field2",SqlDbType.NVarchar,8,"field2");
InsertCommand.Parameters.Add(parameter2);
UpdateCommand.Parameters.Add(parameter2);

SqlParameter parameter3=new SqlParameter("@PramyKey",SqlDbType.NVarchar,8,"PramyKey");
InsertCommand.Parameters.Add(parameter3);
UpdateCommand.Parameters.Add(parameter3);






UpdateAdapter.SelectCommand = SelectCommand;
UpdateAdapter.UpdateCommand = UpdateCommand;
UpdateAdapter.InsertCommand = InsertCommand;

UpdateAdapter.Fill(LocalTable);

DataTable SourceTable=GetSourceTable();

//更新本地数据表---------------------------------疑问地方
foreach (DataRow row in SourceTable.Rows)
{
LocalTable.ImportRow(row);
}


UpdateAdapter.UpdateBatchSize =10;
UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
InsertCommand.UpdatedRowSource = UpdateRowSource.None;
SelectCommand.UpdatedRowSource = UpdateRowSource.None;


LocalConnection.Open();
UpdateAdapter.Update(LocalTable);//提交更新了。为什么无法真正更新到数据源

LocalTable.Clear();
}
catch (Exception ex)
{
LogHelper.Write("同步数据源表异常"+ex.ToString());
}
finally
{
if (LocalConnection.State == ConnectionState.Open)
{
LocalConnection.Close();
}
}


...全文
603 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
googlg 2012-10-30
  • 打赏
  • 举报
回复

[Quote=引用 8 楼 的回复:]
using(SqlConnection cn = new SqlConnection(""))
{
SqlDataAdapter da = new SqlDataAdapter("Select * from Tb ", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
}

ds.Ta……
[/Quote]

这个对吗?
wuyq11 2010-01-08
  • 打赏
  • 举报
回复
using(SqlConnection cn = new SqlConnection(""))
{
SqlDataAdapter da = new SqlDataAdapter("Select * from Tb ", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
}

ds.Tables[0].Rows[0]["Name"] = "";
cn.Open();
SqlCommandBuilder cmd = new SqlCommandBuilder(da);
da.Update(ds.Tables[0]);
cn.Close();
LutzMark 2010-01-08
  • 打赏
  • 举报
回复
更新行的行状态的问题吧
你可以看看我的blog
http://blog.csdn.net/yuxuanji/archive/2009/10/16/4679387.aspx
段传涛 2010-01-08
  • 打赏
  • 举报
回复
这么多代码 ,帮你顶把。
  • 打赏
  • 举报
回复

MainDataSet mds = new MainDataSet(); MainDataSetTableAdapters.TSelfTableAdapter tslef = new ABBS.MainDataSetTableAdapters.TSelfTableAdapter();


怎么根据数据源的表来更新到另外一张本地表
新建数据集
然后...新建TableAdapter 然后我上面的代码就是的了..
我的 text[] 是个二维数组 也就相当于一个本地表
TableAdapter 里面有对应数据库里面的表
datahandler 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jijunwu 的回复:]
C# code//更新本地数据表---------------------------------疑问地方foreach (DataRow rowin SourceTable.Rows)
{
LocalTable.ImportRow(row);
}
LocalTable  存储在内存中
给 LocalTable 添加数据
[/Quote]
===========
大侠,问个比较傻的问题,
怎么根据数据源的表来更新到另外一张本地表
{
涉及操作:
如果本地表存在主键记录,则用数据源对应的该行进行更新到本地表;
如果本地表不存在主键记录,则用数据源该行插入到本地表
字典、泛型我知道怎么操作。Table看了半天帮助不知道怎么写
}
ourola 2010-01-08
  • 打赏
  • 举报
回复
是不是出现"受影响行数......."的问题?
  • 打赏
  • 举报
回复

//更新本地数据表---------------------------------疑问地方
foreach (DataRow row in SourceTable.Rows)
{
LocalTable.ImportRow(row);
}


LocalTable 存储在内存中
给 LocalTable 添加数据
  • 打赏
  • 举报
回复
参考

string file = this.openFileDialog1.FileName;
//this.label1.Text = file;
string[] texts = File.ReadAllLines(file, Encoding.Default);
MainDataSet mds = new MainDataSet();
MainDataSetTableAdapters.TSelfTableAdapter tslef = new ABBS.MainDataSetTableAdapters.TSelfTableAdapter();

for (int i = 0; i < texts.Length;i++ )
{

MainDataSet.TSelfRow row = (MainDataSet.TSelfRow)mds.TSelf.NewRow();
row.IdPrem = price;//价格
row.IdNo = texts[i].Substring(0, 14);//号码
row.status = 1;//状态
mds.TSelf.Rows.Add(row);//添加行

}
int j = tslef.Update(mds.TSelf);//更新



UpdateAdapter.Update(LocalTable);//提交更新了。为什么无法真正更新到数据源

试试更新一个表 而不是更新数据集

111,120

社区成员

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

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

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