ASP查询返回值问题 [英] problem in return value of query in asp
问题描述
亲爱的,
我在asp.net和
中创建登录表单
在我的数据库中,我创建了一个表(tbltestuser),该表具有两个字段:fldUser和fldPass.
并在sql2008中创建一个函数(Getusers)以重新获得值,
什么值???
当用户输入用户名和密码时,如果为true,则函数返回flduser.
我在asp.net中测试了我的功能,但是它正常工作,但是当我在下面的代码中使用它时,它不工作,
代码是:
hi dears,
i make a login form in asp.net and
in my database i make a table(tbltestuser) which have two field:fldUser and fldPass.
and create a function(Getusers) in sql2008 for rerurn a value ,
what value???
when users enter the username an password,if it''s true the function return flduser.
i test my function in asp.net and it''s worked but when i used below code it''s not worked,
code is:
protected void Page_Load(object sender, EventArgs e)
{
string user, pass;
user = Request.Form["user"].ToString();
pass = Request.Form["password"].ToString();
AvarezDataSetTableAdapters.QueriesTableAdapter adap = new AvarezDataSetTableAdapters.QueriesTableAdapter();
ArrayList a = new ArrayList();
adap.GetUsers(user.ToString(), pass.ToString());
}
mysql2008中的功能是:
and function in mysql2008 is:
USE [Shahrdari]
GO
/****** Object: UserDefinedFunction [dbo].[BankName] Script Date: 03/03/2011 11:06:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
create FUNCTION [dbo].[GetUsers]
(
@user as varchar(500),@Pass as varchar(500)
)
RETURNS varchar(500)
AS
BEGIN
declare @s as varchar(500)
set @s= (select fldUser from Tblusertest where fldUser=@user and fldPass=@pass)
if (@s is null) set @s=''
return @s
END
感谢您的帮助.
thanks for ur help.
推荐答案
尝试修改您的SQL2008函数.看来 dbo.GetUsers 可能会返回错误.
Try revising your SQL2008 function. It appears that dbo.GetUsers will possibly return an error.
create FUNCTION [dbo].[GetUsers]
(
@user as varchar(500),@Pass as varchar(500)
)
RETURNS varchar(500)
AS
BEGIN
declare @s as varchar(500)
set @s= (select fldUser from Tblusertest where fldUser=@user and fldPass=@pass)
if (@s is null) set @s=''''
return @s
END
在上面的代码中,代码片段:
In your code above, the code fragment:
set @s= (select fldUser from Tblusertest where fldUser=@user and fldPass=@pass)
是有问题的,因为它是一个子查询,最终会返回多个值,并且您已将其分配给VARCHAR数据类型.该函数将产生的错误如下所示:
消息512,级别16,状态1,第2行
子查询返回了1个以上的值.当子查询遵循=,!=,<,< =,>,> =时,或者当子查询用作表达式时,不允许这样做.
您可以像这样修改功能:
is problematic because it is a subquery which eventually returns multiple values and you have assigned it to a VARCHAR data type. The error that this function will generate may look like below:
Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
You can revise your function like this:
CREATE FUNCTION [dbo].[GetUsers]
(
@User as VARCHAR(500),@Pass AS VARCHAR(500)
)
RETURNS @tmp TABLE(Username VARCHAR(500))
AS BEGIN
INSERT INTO @TMP(Username)
SELECT fldUser from Tblusertest where fldUser=@user and fldPass=@pass
RETURN
END
希望对您有所帮助!:-)
I hope this helps!:-)
这篇关于ASP查询返回值问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!