ASP查询返回值问题 [英] problem in return value of query in asp

查看:79
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆