DataAdapter.Update

wmhnq 2006-01-04 11:59:37
可以直接使用DataAdapter.Update但要先把DataAdapter.SelectCommand,InsertCommand,DeleteCommand设置好.

///////我在用DataAdapter.Update的时候直接就用了,我并没有设置SelectCommand,InsertCommand这些啊?如果设置改是怎么设置的呢?
...全文
356 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lidong6 2006-01-05
  • 打赏
  • 举报
回复
楼主怎么把我回复别人的话搬出来了, 呵呵.

楼上几位回答的都很详细,另外在用.NET2003新建 [数据窗体向导],可以查看更为详细的代码.
ChengKing 2006-01-05
  • 打赏
  • 举报
回复
用SqlCommandBuilder,它会自动生成相关语句.具体请看:
两个方法任意选择一个即可:

public DataSetUpdateByDataSet(DataSet ds,string strTblName,string strConnection)
{
SqlConnection conn = new SqlConnection(strConnection));

SqlDataAdapter myAdapter = new SqlDataAdapter();
SqlCommand myCommand = new SqlCommand("select * from "+strTblName),(SqlConnection) conn);
myAdapter.SelectCommand = myCommand;
SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
try

{

lock(this) //处理并发情况(分布式情况)

{

myAdapter.Update(ds,strTblName);

}

}

catch(Exception err)
{

conn.Close();
throw new BusinessException(err);
}

return ds; //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的ds

}



public DataSet UpdateByDataSet(DataSet ds,string strTblName,string strConnection)
{


SqlConnection conn = new SqlConnection(strConnection));
SqlCommand myCommand = new SqlCommand("select * from "+strTblName),(SqlConnection) conn);

SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand );

SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);

myAdapter.InsertCommand = myCommandBuilder .GetInsertCommand();

myAdapter.UpdateCommand = myCommandBuilder .GetUpdateCommand();

myAdapter.DeleteCommand = myCommandBuilder .GetDeleteCommand();

try

{

lock(this) //处理并发情况(分布式情况)

{

conn.Open();

myAdapter.Update(ds,strTblName);

conn.Close();

}

return ds; //数据集的行状态在更新后会都变为: UnChange,在这次更新后客户端要用返回的ds }
catch(Exception err)
{

conn.Close();
throw new BusinessException(err);
}
}


具体请看原Blog:
http://blog.csdn.net/chengking/archive/2005/08/26/465874.aspx
真相重于对错 2006-01-05
  • 打赏
  • 举报
回复
我在用DataAdapter.Update的时候直接就用了,我并没有设置SelectCommand,InsertCommand这些啊?如果设置改是怎么设置的呢?
-=========================
SqlDataAdapter catDA = new SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories", nwindConn);

catDA.UpdateCommand = new SqlCommand("UPDATE Categories SET CategoryName = @CategoryName " +
"WHERE CategoryID = @CategoryID" , nwindConn);

catDA.UpdateCommand.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

SqlParameter workParm = catDA.UpdateCommand.Parameters.Add("@CategoryID", SqlDbType.Int);
workParm.SourceColumn = "CategoryID";
workParm.SourceVersion = DataRowVersion.Original;

DataSet catDS = new DataSet();
catDA.Fill(catDS, "Categories");

DataRow cRow = catDS.Tables["Categories"].Rows[0];
cRow["CategoryName"] = "New Category";

catDA.Update(catDS);

zhgroup 2006-01-05
  • 打赏
  • 举报
回复
对于DataAdapter,如果要执行insert/delete/update/select操作,都要设置其相应的Command对象,实际上也就是设置其SQL语句及参数,然后再由DataAdapter执行相应操作.
newgrammer 2006-01-05
  • 打赏
  • 举报
回复
你能说具体点吗?

110,545

社区成员

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

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

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