2012-07-02 3 views
2

Я новичок в мире хранимых процедур.Выходной параметр сохраненной процедуры asp.net C#

У нас есть существующая система с существующей хранимой процедурой, которая проверяет имя пользователя и URL-адрес. Хранимая процедура проверяет, существуют ли данные пользователя. Если существует возвращаемое значение 1, если нет возвращаемого значения 0

Все, что я хочу, это написать код asp.net C# для этой хранимой процедуры. Передача сведений о пользователе и пути и возврат 0 или 1 после этого.

Если возвращаемое значение равно 1, позволяет пользователю, если это 0, то перенаправление на другую страницу

Ниже ссылка для SQL Server EXECUTE хранимая процедура

http://www.natboxservices.com/helmshore/img/pic.jpg

любая помощь оценили

благодаря

+6

Это хороший скриншот. – CodeCaster

+3

Вы что-то пробовали? –

+0

Вы должны проверить http://www.c-sharpcorner.com/UploadFile/rohatash/get-out-parameter-from-a-stored-procedure-in-Asp-Net/ Счастливое кодирование !!! – Ravia

ответ

6

Похоже, что вам нужно хранимая процедура с выходными параметром

int errorId = 0; 

using(SqlConnection sqlConnection = new SqlConnection(connectionString)) 
{ 
    using(SqlCommand cmd = new SqlCommand("YourStoredProcedureName", sqlConnection)) 
    { 
    cmd.CommandType=CommandType.StoredProcedure; 
    SqlParameter parm=new SqlParameter("@username", SqlDbType.VarChar); 
    parm.Value="mshiyam"; 
    parm.Direction =ParameterDirection.Input ; 
    cmd.Parameters.Add(parm); 

    SqlParameter parm2=new SqlParameter("@path",SqlDbType.VarChar); 
    parm2.value = "Some Path"; 
    parm2.Direction=ParameterDirection.Output; 
    cmd.Parameters.Add(parm2); 


    SqlParameter parm3 = new SqlParameter("@errorId",SqlDbType.Int); 
    parm3.Direction=ParameterDirection.Output; 
    cmd.Parameters.Add(parm3); 

    sqlConnection.Open(); 
    sqlConnection.ExecuteNonQuery(); 

    errorId = cmd.Parameters["@errorId"].Value; //This will 1 or 0 
    } 

} 
+1

Отлично, что вы помещаете свой 'SqlConnection' в блок' using() .... ', но вы также должны сделать то же самое для своей' SqlCommand'! –

+0

Извините, @marc_s набрал его слишком быстро .... Я обновлю сообщение сейчас – HatSoft

1

Используйте следующий код,

SqlCommand cmd = new SqlCommand("MyStoredProcedure", cn); 
cmd.CommandType=CommandType.StoredProcedure; 
SqlParameter parm=new SqlParameter("@username",SqlDbType.VarChar); 
parm.Value=strUser; 
parm.Direction =ParameterDirection.Input ; 
cmd.Parameters.Add(parm); 
parm=new SqlParameter("@url",SqlDbType.VarChar); 
parm.Value=strUrl; 
parm.Direction =ParameterDirection.Input ; 
cmd.Parameters.Add(parm); 
parm=new SqlParameter("@errorID",SqlDbType.Int); 
parm.Direction=ParameterDirection.Output; // This is important! 
cmd.Parameters.Add(parm); 
cn.Open(); 
cmd.ExecuteNonQuery(); 
cn.Close(); 

// Print the output value 
Console.WriteLine(cmd.Parameters["@errorID"].Value); 
Console.ReadLine(); 
0
int errorId = 0; 

SqlCommand cmd = new SqlCommand("YourSPName", cn); 
cmd.CommandType=CommandType.StoredProcedure; 
SqlParameter parm=new SqlParameter("@username",SqlDbType.VarChar); 
parm.Value=strUser; 
parm.Direction =ParameterDirection.Input ; 
cmd.Parameters.Add(parm); 
parm=new SqlParameter("@url",SqlDbType.VarChar); 
parm.Value=strUrl; 
parm.Direction =ParameterDirection.Input ; 
cmd.Parameters.Add(parm); 
parm=new SqlParameter("@errorID",SqlDbType.Int); 
parm.Direction=ParameterDirection.Output; // This is important! 
cmd.Parameters.Add(parm); 
cn.Open(); 
errorId = (int)cmd.ExecuteNonQuery(); 
cn.Close(); 

sqlConnection.Open(); 
sqlConnection.ExecuteNonQuery(); 

Put Условие:

if(errorId == 1) 
{ 
    `"Allow User here"` 
} 
if(errorId==0) 
{ 
    `Redirect when you to redirect to use.` 
} 
Смежные вопросы