Хранимая процедура, вызванная из C #, не обновляет запись - PullRequest
1 голос
/ 04 января 2012

Я написал простую хранимую процедуру для обновления записи, которая не работает, но я не могу понять, почему. Не выдается никаких исключений, но запись также не обновляется.

См. Код ниже:

public int IMGId;

protected void btnUpdate_Click(object sender, EventArgs e)
    {
        string result = "";
        string sSQL = "usp_imageloader_update";


        using (SqlConnection dbConnection = new SqlConnection(CKS_app_settings.sql_conn_string_db))
        {
            // SqlTransaction tn=null;   
            try
            {
                dbConnection.Open();
                //start Transaction
                // tn = dbConnection.BeginTransaction();
                SqlCommand command = new SqlCommand(sSQL, dbConnection);
                //command.Transaction = tn;
                command.CommandText = sSQL;
                command.CommandType = CommandType.StoredProcedure;
                command.CommandTimeout = 1024;
                command.Parameters.AddWithValue("@p_image_id", IMGId);
                command.Parameters.AddWithValue("@p_url", txtUrl.Text);
                command.Parameters.AddWithValue("@p_alt_text", txtAlt.Text);
                //command.Parameters.AddWithValue("@p_filepath", File1.Value);
                //command.Parameters.AddWithValue("@p_cntr_id", str_id);
                int rowsAffected = command.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
               // throw ex;

                //If it failed for whatever reason, rollback the //transaction
                //tn.Rollback();                          
                //No need to throw because we are at a top level call and //nothing is handling exceptions
                result = ex.InnerException.Message;
            }
        }

Хранимая процедура в SQL SERVER

USE [smsdb_test_griffin2]
GO
/****** Object:  StoredProcedure [dbo].[usp_imageloader_update]    Script Date: 01/04/2012   09:05:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER    procedure [dbo].[usp_imageloader_update]
@p_image_id INT,
@p_url  VARCHAR(255),
@p_alt_text VARCHAR(255)
as 

UPDATE Image_Library_UK 
SET  
Url=@p_url,
Alt_text=@p_alt_text 

WHERE Image_id=@p_image_id

1 Ответ

1 голос
/ 04 января 2012

Попробовав это в отдельности, предположив, что это работает (и нет ничего явно очевидного неправильно), я бы предположил, что один из ваших параметров установлен неправильно. Возможно, что IMGid неправильный - что может иметь такой эффект - или может быть, что url и alttext уже были сброшены к своим значениям при загрузке страницы.

Проверьте значения в точке вызова. Возможно, вам нужно использовать! Page.IsPostBack, чтобы не сбрасывать эти значения при обратной передаче. Возможно, вам нужно получить к ним доступ, используя переменную запроса - это зависит от остальной части вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...