我有一个包含以下代码的登录页面:
程序:
ALTER PROCEDURE [dbo].[Login_Validation]
@email varchar(100),
@password varchar(50)
AS
BEGIN
DECLARE @cnt INTEGER
SET @cnt = (SELECT COUNT(*) FROM SUBSCRIBER_MASTER WHERE EmailId=@email AND [Password]=@password AND [Status]='Y')
END
类文件:
public void Login_Validation(string email, string password)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
try
{
LocalConnection_Class(con);
SqlCommand cmd = new SqlCommand("Login_Validation", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@email", SqlDbType.VarChar, 100)).Value = email;
cmd.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar, 50)).Value = password;
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
}
cmd.Dispose();
con.Close();
}
catch (Exception)
{ }
}
cs文件:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string login = obj.Login_Validation(txtEmail.Text, txtPassword.Text);
}
我无法理解如何解决错误 . 有人可以帮我吗?它给了我一个错误:“无法在obj.Login_Validation中将隐式void转换为字符串” .
4 回答
就像 DJ KRAZE 告诉你的那样
你的
string login = obj.Login_Validation(txtEmail.Text, txtPassword.Text);
建议你的方法Login_Validation
将返回一个字符串,所以你需要做两件事第一
更改方法 Headers
public void Login_Validation(string email, string password)
来public string Login_Validation(string email, string password)
现在你需要在方法中添加一个返回
例如
您将函数声明为void,
public void Login_Validation
并尝试从中分配字符串 .这不会起作用,错误信息非常明确 .
更改方法签名以返回字符串,并使用存储过程中的相关数据添加return语句 .
编辑 - 实际上您的存储过程似乎没有返回任何内容 . 从那里开始!也许是输出参数 .
您的Login_Validation不会返回任何内容 . 它返回一个'void' .
如果您希望它返回某些内容,请更改签名以返回字符串 .
然后返回你想要的任何东西
尝试使用SqlDataReader而不是void
并且这样称呼