如何从Windows窗体C#中的存储过程中获取返回值

随身听

这是我的程序:

DECLARE @ReturnValue int

SELECT @ReturnValue = idUser
FROM Users
WHERE Alias = @UserAlias AND Password = @UserPassword 

RETURN @ReturnValue

这是我的C#代码,我希望可以从过程中检索该值:

TeamPWSecureBD.Open(); //Open SQL Connection

string alias = textBoxUsernameLogin.Text.Trim();
string pass = textBoxPasswordLogin.Text;

SqlCommand LoginVerify = new SqlCommand("_spUserVerify", TeamPWSecureBD);
LoginVerify.CommandType = CommandType.StoredProcedure;

LoginVerify.Parameters.AddWithValue("@UserAlias", alias);
LoginVerify.Parameters.AddWithValue("@UserPassword", pass);

SqlDataReader UserVerify = LoginVerify.ExecuteReader();

//Se o valor retornado pelo sp for 0 significa que o user não existe.
//O sp retorna o id do utilizador se o username e a password estiverem corretas.
//O id de utilizador menor é o 7.
if (Convert.ToInt32(UserVerify.GetSqlValue(0)) == 0)
    MessageBox.Show("Invalid username/password.", "Login Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
    GlobalVariables.UserLoggedIn = Convert.ToInt32(UserVerify.GetSqlValue(0));
    PWLists MainForm = new PWLists();
    MainForm.ShowDialog();
    this.Close();
}

当我在SQL Server中执行该过程时,返回的值是正确的。

但是一旦我尝试以表格的形式阅读它,它就会因错误而崩溃:

不存在数据时进行无效的读取尝试

史蒂夫

如果要捕获由存储过程执行的RETURN语句的值,则需要向SqlCommand中添加另一个参数

 SqlParameter r = LoginVerify.Parameters.Add("@return", SqlDbType.Int);
 r.Direction = ParameterDirection.ReturnValue;
 r.Value = 0;
 SqlDataReader UserVerify = LoginVerify.ExecuteReader();

 // Now you need to complete the reading from the UserVerify reader and 
 // finally you can catch the return value 
 .....

 UserVerify.Close();
 int result = (int)r.Value;

但是,考虑到StoredProcedure的代码,我认为您可以简单地避免声明另一个参数以及SqlDataReader,因为您似乎只返回一个字段的一行。ExecuteScalar的确切范围...

SP现在只是一个选择

SELECT idUser FROM Users 
WHERE Alias = @UserAlias AND Password = @UserPassword 

和检索的代码idUser

object result = LoginVerify.ExecuteScalar();

if (result == null)
    MessageBox.Show("Invalid username/password.", "Login Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
    GlobalVariables.UserLoggedIn = Convert.ToInt32(result);
    PWLists MainForm = new PWLists();
    MainForm.ShowDialog();
    this.Close();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从存储过程中获取返回值

来自分类Dev

如何从存储过程中获取返回值

来自分类Dev

尝试从必须返回值的C#形式的存储过程中查找值

来自分类Dev

如何从实体框架的存储过程中获取返回值?

来自分类Dev

如何从实体框架的存储过程中获取返回值?

来自分类Dev

如何从存储过程中的 EXEC(Query) 获取返回值

来自分类Dev

为什么C#代码没有从存储过程中返回值

来自分类Dev

调用存储过程时,在C#中获取返回值和一组记录

来自分类Dev

如何从C#中的存储过程中获取设置值

来自分类Dev

如何从C#中的存储过程中获取设置值

来自分类Dev

使用ExecuteSqlCommand(使用Entity Framework)从存储过程中获取返回值

来自分类Dev

从存储过程中获取返回值并在程序中使用它

来自分类Dev

如何正确地从调用存储过程中捕获返回值

来自分类Dev

如何从子过程中的函数返回值?

来自分类Dev

调用参数化的存储过程,该过程在C#中返回值

来自分类Dev

从VB.NET中的存储过程获取返回值

来自分类Dev

如何从存储过程中返回十进制值

来自分类Dev

如何更改存储过程中SELECT返回的值?

来自分类Dev

不从ASP Classic中的存储过程中捕获返回值

来自分类Dev

如何从存储过程中获取结果作为值?

来自分类Dev

如何在Slick中调用存储过程并获取返回值(使用Scala)

来自分类Dev

如何从C#中的存储过程中获取所需的参数

来自分类Dev

如何从存储过程中返回ID?

来自分类Dev

如何从存储过程中获取价值

来自分类Dev

我如何从Erlang中产生的过程中获得返回值?

来自分类Dev

C#从存储过程获取返回值不起作用

来自分类Dev

将 XML 数据传递给存储过程并从中获取返回值 c#?

来自分类Dev

将存储过程的返回值存储在变量中

来自分类Dev

将存储过程的返回值存储在变量中

Related 相关文章

  1. 1

    如何从存储过程中获取返回值

  2. 2

    如何从存储过程中获取返回值

  3. 3

    尝试从必须返回值的C#形式的存储过程中查找值

  4. 4

    如何从实体框架的存储过程中获取返回值?

  5. 5

    如何从实体框架的存储过程中获取返回值?

  6. 6

    如何从存储过程中的 EXEC(Query) 获取返回值

  7. 7

    为什么C#代码没有从存储过程中返回值

  8. 8

    调用存储过程时,在C#中获取返回值和一组记录

  9. 9

    如何从C#中的存储过程中获取设置值

  10. 10

    如何从C#中的存储过程中获取设置值

  11. 11

    使用ExecuteSqlCommand(使用Entity Framework)从存储过程中获取返回值

  12. 12

    从存储过程中获取返回值并在程序中使用它

  13. 13

    如何正确地从调用存储过程中捕获返回值

  14. 14

    如何从子过程中的函数返回值?

  15. 15

    调用参数化的存储过程,该过程在C#中返回值

  16. 16

    从VB.NET中的存储过程获取返回值

  17. 17

    如何从存储过程中返回十进制值

  18. 18

    如何更改存储过程中SELECT返回的值?

  19. 19

    不从ASP Classic中的存储过程中捕获返回值

  20. 20

    如何从存储过程中获取结果作为值?

  21. 21

    如何在Slick中调用存储过程并获取返回值(使用Scala)

  22. 22

    如何从C#中的存储过程中获取所需的参数

  23. 23

    如何从存储过程中返回ID?

  24. 24

    如何从存储过程中获取价值

  25. 25

    我如何从Erlang中产生的过程中获得返回值?

  26. 26

    C#从存储过程获取返回值不起作用

  27. 27

    将 XML 数据传递给存储过程并从中获取返回值 c#?

  28. 28

    将存储过程的返回值存储在变量中

  29. 29

    将存储过程的返回值存储在变量中

热门标签

归档