SqlAdapter.Update() 方法执行插入而不是更新
本文关键字:更新 插入 执行 Update 方法 SqlAdapter | 更新日期: 2023-09-27 18:36:47
我使用 SqlAdapter.Update() 方法来更新表中的行。为此,我创建了数据表并向该数据表添加值。
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);
当我使用此命令时,它会在数据库中插入新行,而不是更新现有行。为什么会这样?
我认为
这里发生的事情是(根据你给出的代码)你的数据适配器无法识别你的数据表中的行,它与你的数据表无关,所以作为一个猜测,尝试通过数据适配器填充你的数据表,然后修改你的数据表并更新它。
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);
-希望对您有所帮助。
这只是一个想法,而不是解决方案...
// 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;