3

我正在尝试更新 ID 值。因此,如果 ID 为 1,则新值为 2,则应将旧 ID 替换为新 ID。

后端:

     public static void UpdateLocation( int locationID, SqlConnection connection,                SqlTransaction transaction )
    {
        StringBuilder sqlString = new StringBuilder();
        SqlCommand command;

        sqlString.Append( "UPDATE [Location] SET " );
        sqlString.Append( "description = @description " );
        sqlString.Append( "WHERE locationID = @locationID " );
        command = new SqlCommand( sqlString.ToString(), connection );
        if( ( transaction != null ) ) command.Transaction = transaction;

        command.Parameters.Add( "@locationID", SqlDbType.Int ).Value = locationID;
       command.Parameters.Add( "@description", SqlDbType.VarChar ).Value = description;
        int rowsAffected = command.ExecuteNonQuery();

        if( !( rowsAffected == 1 ) )
        {
            throw new Exception( "An error has occurred while updating UpdateMedicationDispenseStatus." );
        }
    }

前端:

      private void btnFromLocation_Click( object sender, System.Windows.RoutedEventArgs e )
     {
         if( !( ( Locations )cmbLocationDescriptionList.SelectedItem == ( Locations )cmbDescriptionListTo.SelectedItem ) )
         {


             for( int i = 0; i < lstMedicationForCurrentLocation.SelectedItems.Count; i++ )
    {
                 location = (Locations)cmbDescriptionListTo.SelectedItem;
        LocationData.UpdateLocation( location.LocationID );

编辑我已经向 SQL 查询添加了一个参数,但仍然没有更新

4

3 回答 3

6

以下解决方法可能不是可取的,但至少从知识的角度来看,这可能对您有所帮助。

如果您想自己设置标识列 (LocationID) 的值,而不是让 Sql 服务器执行,则有一些解决方法。

set identity_insert Table_Name ON

然后删除您的行并以不同的身份重新插入。请注意,您仍然无法将同一行更新为新身份。这将允许插入语句指定标识列值。

使用新标识值完成插入后,identity_insert关闭

set identity_insert Table_Name OFF

由于您正在以编程方式进行更新,因此您可以拥有所有列的值,并且可能为除您选择的标识值之外的所有列插入具有相同值的新行。

于 2013-07-29T12:32:50.337 回答
0

您必须检查您的 SQL db 中是否启用了 Identity_insert,否则在更新语句之前执行以下操作。

设置 identity_insert YourTable ON 。然后删除您的行并以不同的身份重新插入。

完成插入后,不要忘记关闭 identity_insert

将 identity_insert YourTable 设置为 OFF。

于 2013-07-29T12:33:04.387 回答
0

LocationID 是一个自动生成的 id。您应该更改数据库。您应该将身份设置为否。

于 2013-07-29T11:31:45.297 回答