Как проверить возвращаемое значение для executequery в C # в SQL Server 2005? - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь вызвать хранимую процедуру на моем сайте asp.net в c #.Я использую класс SqlCommand и вызываю ExecuteQuery ().Возвращаемое значение -1?

Хранимая процедура работает, я проверил ее в SQL Management Studio.Как я могу получить более подробное описание ошибки?

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Моим первым портом захода будет запуск SQL Server Profiler в SQL Server Management Studio, чтобы вы могли точно видеть, какой SQL выполняется для базы данных. Если у вас есть это, запустите SQL в SQL Server Management Studio, и вы сможете определить, является ли это ошибкой SQL или нет. Отпишитесь с вашими выводами.

0 голосов
/ 30 июня 2011

Ваша хранимая процедура должна быть такой, как показано ниже. Смотрите для Error_Message и Error_Number

Create Proc Testing
As

Set NoCount On
Set XACT_ABORT ON
Begin Try
    Begin Tran
        "Your Insert/Update Statement"
        Select '' as 'Message', 0 as 'Number'
    Commit Tran
End Try
Begin Catch
    Select Error_Message() as 'Message', Error_Number() as 'Number'
    Rollback Tran
End Catch

Ваш код должен быть как ниже

string str;
int number;
using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) { 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    string expression = "Parameter value"; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "Your Stored Procedure"; 
    cmd.Parameters.Add("Your Parameter Name", 
                SqlDbType.VarChar).Value = expression;    
    cmd.Connection = con; 
    using (IDataReader dr = cmd.ExecuteReader()) 
    { 
        if (dr.Read()) 
        {
             str = dr["Message"].ToString();
             number = Convert.ToInt16(dr["Number"]);
        } 
    } 
}

Таким образом вы можете получить сообщение об ошибке / номер ошибки из хранимой процедуры, если она возвращает

...