gpt4 book ai didi

c# 在过程或函数中指定的参数太多

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:20 25 4
gpt4 key购买 nike

我写了一个存储过程来检查用户名和密码是否存在于数据库中并返回相应的结果

这是存储过程

 ALTER proc [dbo].[checkuser]
@userid varchar(20),
@password varchar(20),
@ReturnVal varchar(50) output
As
Begin
if exists(select userid from users where userid=@userid)
set @ReturnVal='Logged in Successfully'
else
set @ReturnVal='Login Failed'
end

这是我的c#代码

private void button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection(
"File Name=E:\\Vivek\\License Manager\\License Manager\\login.udl");

try
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("checkuser",conn);
cmd.CommandType = CommandType.StoredProcedure;
OleDbParameter p1=new OleDbParameter("userid",username.Text);
OleDbParameter p2 = new OleDbParameter("password",password.Text);
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
var returnParameter = cmd.Parameters.Add("ReturnVal",OleDbType.Integer);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

}
}

我是 c# 的新手。我想检查数据库中是否存在用户名。但是当我执行代码时,我收到一条错误消息,提示“过程或函数中指定的参数太多”。

谁能告诉我哪里出错了?

谢谢

最佳答案

过程从不返回值。您必须在存储过程中使用输出参数。

SP 的变化如下所示:

create proc checkuser
@userid varchar(20),
@password varchar(20)
@result int output
As
Begin
if exists(select userid from users where userid=@userid)
set @result = 0
else
set @result = 1
end

在 C# 代码中:

 SqlParameter returnParameter = cmd.Parameters.Add("result", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
int id = (int) returnParameter.Value;

关于c# 在过程或函数中指定的参数太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com