2013-07-04 73 views

回答

2

這意味着你使用的是DataAdapter更新其中包含刪除DataRows一個表(他們RowStateDeleted)。然後DataAdapter使用指定的DeleteCommand來刪除數據庫中的這一行。但是你沒有提供它。

所以你需要提供它。

MSDN例如:

public static SqlDataAdapter CreateCustomerAdapter(
    SqlConnection connection) 
{ 
    SqlDataAdapter adapter = new SqlDataAdapter(); 

    // Create the SelectCommand. 
    SqlCommand command = new SqlCommand("SELECT * FROM Customers " + 
     "WHERE Country = @Country AND City = @City", connection); 

    // Add the parameters for the SelectCommand. 
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15); 
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15); 

    adapter.SelectCommand = command; 

    // Create the InsertCommand. 
    command = new SqlCommand(
     "INSERT INTO Customers (CustomerID, CompanyName) " + 
     "VALUES (@CustomerID, @CompanyName)", connection); 

    // Add the parameters for the InsertCommand. 
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID"); 
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName"); 

    adapter.InsertCommand = command; 

    // Create the UpdateCommand. 
    command = new SqlCommand(
     "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " + 
     "WHERE CustomerID = @oldCustomerID", connection); 

    // Add the parameters for the UpdateCommand. 
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID"); 
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName"); 
    SqlParameter parameter = command.Parameters.Add(
     "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID"); 
    parameter.SourceVersion = DataRowVersion.Original; 

    adapter.UpdateCommand = command; 

    // Create the DeleteCommand. 
    command = new SqlCommand(
     "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection); 

    // Add the parameters for the DeleteCommand. 
    parameter = command.Parameters.Add(
     "@CustomerID", SqlDbType.NChar, 5, "CustomerID"); 
    parameter.SourceVersion = DataRowVersion.Original; 

    adapter.DeleteCommand = command; 

    return adapter; 
} 

的最後一個命令是DeleteCommand

5

您可以在某些情況下自動創建DeleteCommand(從SelectCommand推斷)。

SqlDataAdapter da = new SqlDataAdapter("...SELECT Statement...", connection); 
SqlCommandBuilder cmd_b = new SqlCommandBuilder(da); // this already creates 
// the Update- and DeleteCommands for the DA 

下面是關於它的文章:
http://msdn.microsoft.com/library/vstudio/tf579hcz.aspx