我是C#的初学者。我无法调用存储过程。
我的存储过程是:
CREATE PROCEDURE USP_login
@us VARCHAR(20),
@pwd VARCHAR(20)
AS
BEGIN TRAN
BEGIN TRY
SELECT *
FROM dbo.KhachHang
WHERE tenDangNhap = @us AND matKhau = @pwd
END TRY
BEGIN CATCH
ROLLBACK TRAN
RETURN 0
END CATCH
COMMIT TRAN
RETURN 1
GO
在我的C#代码中,我使用此函数调用USP_login
存储过程,但它不起作用:
public bool loginStored(string us, string pwd)
{
object[] sqlParams =
{
new SqlParameter ("@userName", us),
new SqlParameter ("@passWord", pwd),
};
var rs = db.Database.SqlQuery<bool>("USP_login @userName, @passWord", sqlParams).SingleOrDefault();
return rs;
}
屏幕截图中的错误消息:
答案 0 :(得分:3)
看起来SELECT * ...
返回的不只是一个bool
。 (根据查询,显然表格至少两个字段tenDangNhap
和matKhau
。)但这就是您告诉代码期望的内容:
db.Database.SqlQuery<bool>(/.../)
只选择您想要的列:
SELECT SomeBooleanValue FROM dbo.KhachHang WHERE tenDangNhap=@us AND matKhau=@pwd
或为每条记录指定正确的类型(可能是您需要定义的自定义类):
db.Database.SqlQuery<SomeObjectType>(/.../)