【问题标题】:Database is not updating after running stored procedure in asp app在 asp 应用程序中运行存储过程后数据库未更新
【发布时间】:2017-03-27 15:35:36
【问题描述】:

我有一个 asp 应用程序,它应该能够让用户更新 sql server 数据库中的条目。当我在我的方法中运行我的存储过程时,数据库没有任何反应。

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 但我没有收到任何异常或错误。有什么我遗漏或不理解的地方吗?

【问题讨论】:

  • set nocount on; 一起告诉服务器不要计算(“nocount”)受影响的行数,因此它返回-1。数据会更新吗?
  • 您是否在数据库中验证了数据是否实际更新?
  • 您在运行代码(和存储过程)时在 Sql Profiler 中看到了什么?
  • 我验证数据没有更新
  • @TZHX 感谢您的提示,我删除了该行并将行数更改为 1(我所期望的),但数据库中的数据没有更新。

标签: c# asp.net sql-server stored-procedures


【解决方案1】:

我认为您需要在创建命令之前打开连接,希望对您有所帮助。

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

好好享受吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多