2017-03-27 12 views
0

ユーザーにSQL Serverデータベースのエントリを更新させることができるはずのaspアプリケーションがあります。私のメソッドでストアドプロシージャを実行すると、データベースに何も起こりません。aspアプリケーションでストアドプロシージャを実行した後にデータベースが更新されない

public void updateFeature(Feature updatedFeature) 
{ 
    using (SqlConnection sqlConnection = new SqlConnection(GetConnectionString(updatedFeature.Environment))) 
    using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) 
    { 
     sqlCommand.CommandType = CommandType.StoredProcedure; 
     sqlCommand.CommandText = "usp_UpdateFeature"; 
     sqlCommand.Parameters.AddWithValue("@FeatureName", updatedFeature.FeatureName); 
     sqlCommand.Parameters.AddWithValue("@FeatureID", updatedFeature.FeatureID); 
     sqlCommand.Parameters.AddWithValue("@FeatureDescription", updatedFeature.Description); 
     sqlCommand.Parameters.AddWithValue("@FieldName", updatedFeature.FieldName); 
     sqlCommand.Parameters.AddWithValue("@OnOffSwitch", updatedFeature.IsOn); 
     sqlCommand.Parameters.AddWithValue("@ChannelID", updatedFeature.ChannelID); 
     sqlCommand.Parameters.AddWithValue("@ProductID", updatedFeature.ProductID);     

     sqlConnection.Open(); 
     int numberOfRowsChanged = sqlCommand.ExecuteNonQuery(); 
    } 
} 

と私のストアドプロシージャがこの

ALTER PROCEDURE [dbo].[usp_UpdateFeature] 
( 
@FeatureID int, 
@FeatureName varchar(30), 
@FeatureDescription varchar(200) = null, 
@FieldName varchar(40), 
@OnOffSwitch bit, 
@ChannelID varchar(3), 
@ProductID varchar(2) 
) 
AS 

SET NOCOUNT ON 

UPDATE FM_Feature 
SET FeatureName = @FeatureName, 
FeatureDescription = @FeatureDescription, 
FieldName = @FieldName, 
OnOffSwitch = @OnOffSwitch, 
ProductID = @ProductID, 
ChannelID = @ChannelID 
WHERE FeatureID = @FeatureID 

のように見えるnumberOfRowsChangedパラメータは-1を返しますが、私はすべての例外やエラーを得ることはありません。私が紛失しているか、理解していないものがありますか?

+3

と 'set nocount on;;影響を受ける行の数をカウントしないようにサーバーに指示しているので、-1を返します。データは更新されますか? – TZHX

+0

データが実際に更新されたかどうかをdbで確認しましたか? –

+0

コード(およびストアドプロシージャ)を実行している間にSql Profilerで何を確認しましたか? – Igor

答えて

0

あなたのコマンドを作成する前に接続を開く必要があると思いますが、それはあなたにとって有益なことを望みます。

using (SqlConnection sqlConnection = new SqlConnection(GetConnectionString(updatedFeature.Environment)) 

sqlConnection.Open(); 

using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) 
{ 
    sqlCommand.CommandType = CommandType.StoredProcedure; 
    sqlCommand.CommandText = "usp_UpdateFeature"; 
    sqlCommand.Parameters.AddWithValue("@FeatureName", updatedFeature.FeatureName); 
    sqlCommand.Parameters.AddWithValue("@FeatureID", updatedFeature.FeatureID); 
    sqlCommand.Parameters.AddWithValue("@FeatureDescription", updatedFeature.Description); 
    sqlCommand.Parameters.AddWithValue("@FieldName", updatedFeature.FieldName); 
    sqlCommand.Parameters.AddWithValue("@OnOffSwitch", updatedFeature.IsOn); 
    sqlCommand.Parameters.AddWithValue("@ChannelID", updatedFeature.ChannelID); 
    sqlCommand.Parameters.AddWithValue("@ProductID", updatedFeature.ProductID);     

    int numberOfRowsChanged = sqlCommand.ExecuteNonQuery(); 
} 

お楽しみください。

関連する問題