public static int UpdateData(DataTable dt)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["WebSite"].ToString());        SqlDataAdapter myAdapter = new SqlDataAdapter();
        SqlCommand myCommand = new SqlCommand("select * from "+dt.TableName, conn);
        myAdapter.SelectCommand = myCommand;
        SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
        myAdapter.UpdateCommand = myCommandBuilder.GetUpdateCommand();
        return myAdapter.Update(dt);
    }
    public static int SqlBulkUpdate(DataTable dt)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["WebSite"].ToString());
        int affect = 0;
        try
        {
            SqlCommand myCommand = new SqlCommand("SELECT * FROM " + dt.TableName, conn);
            SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);
            SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
            myAdapter.UpdateCommand = myCommandBuilder.GetUpdateCommand();
            conn.Open();
            affect = myAdapter.Update(dt);
            dt.AcceptChanges();
            conn.Close();
        }
        catch (Exception err)
        {
            conn.Close();
            throw err;
        }
        return affect;
    }
为什么总是将数据添加到数据库中,却不能修改,数据库ID为主键?

解决方案 »

  1.   

    你可以将updatecommand的语句输出来看下,数据表中一定要有主键才行,我个人感觉还是不要用这种来更新吧,都不太好控制
      

  2.   

    UPDATE [FlowsSetting] SET [EmployeeID] = @p1, [EmployeeName] = @p2 WHERE (
    ([ID] = @p3) AND
     ((@p4 = 1 AND [EmployeeID] IS NULL) OR ([EmployeeID] = @p5)) AND ((@p6 = 1 AND [EmployeeName] IS NULL) OR ([EmployeeName] = @p7)))
      

  3.   

    咋的就没人回复呢?似乎不管UpdateCommand 是什么都是执行添加操作。