【发布时间】: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