每次执行代码时,我都会从方法
中获得“false” public bool exists(int vpisna, string geslo)
{
bool a = false;
Uspeh = true;
cmd = new SqlCommand("SELECT dbo.fnExists(@Vpisna,@Geslo)", povezava);
cmd.Parameters.AddWithValue("@Vpisna", vpisna);
cmd.Parameters.AddWithValue("@Geslo", geslo);
try
{
povezava.Open();
int result =(int)cmd.ExecuteScalar();
if (result==1)
{
a = true;
}
}
catch (Exception e)
{
ex = e;
}
finally
{
povezava.Close();
}
return a;
}
我的标量值函数:
[dbo].[fnExists](
@Vpisna int,
@Geslo nvarchar(40)
)
RETURNS INT AS BEGIN
DECLARE @a int
SET @a = (
SELECT
COUNT(*)
FROM
Student
WHERE
ID = @Vpisna
AND
Geslo = CONVERT( nvarchar(40), HashBytes('SHA1', @Geslo ), 2 )
)
RETURN @a
END
每次我得到一个错误的结果,即使我试图操纵标量值函数内的数据。当我在没有函数的情况下在真实数据上尝试SELECT语句时,它在SQL Management Studio中运行。
答案 0 :(得分:1)
[dbo].[fnExists](
@Vpisna int,
@Geslo nvarchar(40)
)
RETURNS INT AS BEGIN
DECLARE @a int
SELECT
@a = COUNT(*)
FROM
Student
WHERE
ID = @Vpisna
AND
Geslo = CONVERT( nvarchar(40), HashBytes('SHA1', @Geslo ), 2 )
RETURN @a
END
答案 1 :(得分:1)
我认为你的代码系列是错误的。在创建sql命令之前必须打开sql连接或必须从sqlcommand
打开。
使用它;
SqlConnection cnn = new SqlConnection("sql-connection-string");
cnn.Open();
SqlCommand cmd = new SqlCommand("select 1", cnn);
或
SqlConnection cnn = new SqlConnection("sql-connection-string");
SqlCommand cmd = new SqlCommand("select 1", cnn);
cmd.Connection.Open();