0

我使用 SqlAdapter.Update() 方法来更新表中的行。为此,我创建了 Datatable 并向该数据表添加值。

DataTable dtTable = new DataTable("Product");
SqlConnection myLocalConnection = new SqlConnection(_ConnectionString);
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter("Select * from " + dtTable.TableName, myLocalConnection);
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(mySqlDataAdapter);

 mySqlDataAdapter.Update(dtTable);

当我使用此命令时,它会在数据库中插入新行,而不是更新现有行。为什么会这样?

4

2 回答 2

1

这只是一个想法,而不是解决方案......

// update command to update database table. 
string strUpdateCommand =
"Update Students set Name = @Name, Gender = @Gender, Total = @Total where ID = @ID";
// create an instance of SqlCommand using the update command created above. 
SqlCommand updateCommand = new SqlCommand(strUpdateCommand, con);
// specify the paramaters of the update command. 
updateCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 50, "Name");
updateCommand.Parameters.Add("@Gender", SqlDbType.NVarChar, 20, "Gender");
updateCommand.Parameters.Add("@Total", SqlDbType.Int, 0, "Total");
updateCommand.Parameters.Add("@ID", SqlDbType.Int, 0, "ID");
// associate update command with SqlDataAdapter instance. 
dataAdapter.UpdateCommand = updateCommand;
于 2013-10-25T09:01:26.417 回答
1

我认为这里发生的事情是(根据您给定的代码)您的数据适配器无法识别您的数据表中的行它与您的数据表无关,因此猜测尝试通过数据适配器填充您的数据表然后修改您的数据表并更新它。

    DataTable dtTable = new DataTable();
    SqlConnection myLocalConnection = new SqlConnection(_ConnectionString);

    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter("Select * from " +   
    dtTable.TableName, myLocalConnection); 

    SqlCommandBuilder builder= new SqlCommandBuilder(mySqlDataAdapter);     
    mySqlDataAdapter.Fill(dtTable,"Products" ) 

     // Code to modify your datatable

    mySqlDataAdapter.UpdateCommand = builder.GetUpdateCommand();  

    mySqlDataAdapter.Update(dtTable);

- 希望能帮助到你 。

于 2013-10-25T10:02:10.960 回答