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 );

EDIT SQLクエリにパラメータを追加しましたが、まだ更新されていません

4

3 に答える 3

0

SQL db で Identity_insert が有効になっているかどうかを確認する必要があります。そうでない場合は、更新ステートメントの前に以下のようにします。

identity_insert YourTable を ON に設定します。次に、行を削除し、別の ID で再挿入します。

挿入が完了したら、identity_insert をオフにすることを忘れないでください

identity_insert YourTable をオフに設定します。

于 2013-07-29T12:33:04.387 に答える
0

その場合、LocationID は自動的に生成された ID です。データベースで変更する必要があります。ID を no に設定する必要があります。

于 2013-07-29T11:31:45.297 に答える