是控制台程序
代码如下:
SqlConnection connection=new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;"+"Initial Catalog =NorthWind");
connection.Open();

SqlCommand cmd=new SqlCommand("select * from employees where FirstName=@FirstName",connection);
cmd.Parameters.Add("@FirstName",SqlDbType.NVarChar,10);
cmd.Parameters["@FirstName"].Value="Andrew"; SqlDataAdapter adapter=new SqlDataAdapter();
adapter.SelectCommand=cmd;
DataSet dataset=new DataSet();
adapter.Fill(dataset,"Employees");
Console.WriteLine("name before change:{0}",
dataset.Tables["Employees"].Rows[0]["FirstName"]);
            SqlCommand upcmd=new SqlCommand("Update Employees set FirstName=@FirstName where FirstName=@OldFirstName",connection);

upcmd.Parameters.Add("@FirstName",SqlDbType.NVarChar,10);
upcmd.Parameters["@FirstName"].Value="Rock";
upcmd.Parameters.Add("@OldFirstName",SqlDbType.NVarChar,10);
upcmd.Parameters["@OldFirstName"].Value="Andrew";
            adapter.UpdateCommand=upcmd;
adapter.Update(dataset.Tables["Employees"]);

Console.WriteLine("name after change:{0}",
dataset.Tables["Employees"].Rows[0]["FirstName"]);
connection.Close();

解决方案 »

  1.   

    应该是Dataset的内容发生变化时,Adapter的Update方法才起作用!
      

  2.   

    你是说更新不了数据库吧...要更新数据库须你的Dataset的内容改变了,才能用Adapter更新到数据库,如下:在adapter.UpdateCommand=upcmd;下加上这样一句代码即:adapter.UpdateCommand=upcmd;dataset.Tables["Employees"].Rows[0]["FirstName"]="Rock";adapter.Update(dataset.Tables["Employees"]);......
      

  3.   

    就算是为了学习自定义DataAdapter.UpdateCommand,那也是最好在更新语句里使用Primary Key作为更新条件,比如EmployeeID。再说把FirstName为Andrew的所有记录中的第一个记录改为Rock,这种事儿没什么意义,不是编程的好习惯。
      

  4.   

    好像没有生成uptate语句,
    1。系统偷懒生成
    2。自己定义update语句
    3. Primary Key
      

  5.   

    俺也碰到此问题
    系统明明执行了sqlDataAdapter1.Update(dsNorthwind1)这一句
    可是数据源并没有被更新