我想使用一個存儲過程,它需要兩個參數(登錄,pw)並返回用戶信息。從c#中的存儲過程獲取返回值(登錄過程)
如果我手動執行的SP,我得到
Session_UID User_Group_Name Sys_User_Name
------------------------------------ -------------------------------------------------- -
NULL Administrators NTMSAdmin
No rows affected.
(1 row(s) returned)
@RETURN_VALUE = 0
Finished running [dbo].[p_SYS_Login].
但與下面的代碼,我只得到返回值。 你知道如何獲得上面顯示的其他值,如 Session_UID,User_Group_Name和Sys_User_Name?
如果您在下面的代碼中看到註釋部分。我試圖添加一些輸出參數,但它不適用於不正確的參數數量錯誤。
string strConnection = Settings.Default.ConnectionString;
using (SqlConnection conn = new SqlConnection(strConnection))
{
using (SqlCommand cmd = new SqlCommand())
{
SqlDataReader rdr = null;
cmd.Connection = conn;
cmd.CommandText = "p_SYS_Login";
//cmd.CommandText = "p_sys_Select_User_Group";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramReturnValue = new SqlParameter();
paramReturnValue.ParameterName = "@RETURN_VALUE";
paramReturnValue.SqlDbType = SqlDbType.Int;
paramReturnValue.SourceColumn = null;
paramReturnValue.Direction = ParameterDirection.ReturnValue;
//SqlParameter paramGroupName = new SqlParameter("@User_Group_Name", SqlDbType.VarChar, 50);
//paramGroupName.Direction = ParameterDirection.Output;
//SqlParameter paramUserName = new SqlParameter("@Sys_User_Name", SqlDbType.VarChar, 50);
//paramUserName.Direction = ParameterDirection.Output;
cmd.Parameters.Add(paramReturnValue);
//cmd.Parameters.Add(paramGroupName);
//cmd.Parameters.Add(paramUserName);
cmd.Parameters.AddWithValue("@Sys_Login", textUserID.Text);
cmd.Parameters.AddWithValue("@Sys_Password", textPassword.Text);
try
{
conn.Open();
object result = cmd.ExecuteNonQuery();
int returnValue = (int)cmd.Parameters["@RETURN_VALUE"].Value;
if (returnValue == 0)
{
Hide();
Program.MapForm.Show();
}
else if (returnValue == 1)
{
MessageBox.Show("The username or password you entered is incorrect", "NTMS Login", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (returnValue == 2)
{
MessageBox.Show("This account is disabled", "NTMS Login", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
MessageBox.Show("Database error. Please contact administrator", "NTMS Login", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
string message = ex.Message;
string caption = "MAVIS Exception";
MessageBoxButtons buttons = MessageBoxButtons.OK;
MessageBox.Show(
message,
caption,
buttons,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button1);
}
}
}
感謝您的幫助。
但如果我使用的ExecuteReader我什麼也沒得到,只是一個空字符串... – Devphil 2010-05-31 17:52:00