Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如果存在于存储过程中_Asp.net_Vb.net_Sql Server 2005 - Fatal编程技术网

Asp.net 如果存在于存储过程中

Asp.net 如果存在于存储过程中,asp.net,vb.net,sql-server-2005,Asp.net,Vb.net,Sql Server 2005,我正在使用以下StoredProcess set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO Alter PROCEDURE [dbo].[GetUserDetailsByUserID] ( @UserId varchar(100) ) AS BEGIN IF EXISTS(Select * from Registration where UserId=@UserID) BEGIN Select

我正在使用以下StoredProcess

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO


Alter PROCEDURE [dbo].[GetUserDetailsByUserID]
(
    @UserId varchar(100)
)
AS
BEGIN

    IF EXISTS(Select * from Registration where UserId=@UserID)
        BEGIN
            Select
                   [Name],
                   [UserId],
                   [PermanentAddress],
                   [TemporaryAddress],
                   [OfficePhoneNo],
                   [ResidentialPhoneNo],
                   [MobileNo],
                   [Email],
                   [ContactPerson],
                   [C_OfficePhoneNo],
                   [C_ResidentialPhoneNo],
                   [C_MobileNo],
                   [C_Email],
                   [Project],
                   [TotalAmount]
            From
                Registration
            Where
                UserId=@UserId

        END

END
我在vb中使用以下代码

Public Function GetUserDetailsByUserID(ByVal strUserId As String) As DataTable
        Try

            Dim db As Database = DatabaseFactory.CreateDatabase()
            Dim DbCommand As DbCommand = _
                db.GetStoredProcCommand("GetUserDetailsByUserID")
            db.AddInParameter(DbCommand, "@UserId", DbType.String, strUserId)
            Return db.ExecuteDataSet(DbCommand).Tables(0)

        Catch ex As Exception
            Return New DataTable()
        End Try
    End Function

如果注册表中不存在与userid对应的详细信息,
db.ExecuteDataSet(DbCommand).Tables(0)
显示一个错误,因为
找不到表(0)
。我需要对stoted过程进行哪些修改以消除此错误?

该过程不会始终返回记录集。如果没有记录集,
将为空,
表(0)
将失败并返回错误。您应该只返回选择,而不是仅选择记录是否存在。然后,您的代码可以检查返回的记录集是否为空。

该过程并不总是返回记录集。如果没有记录集,
将为空,
表(0)
将失败并返回错误。您应该只返回选择,而不是仅选择记录是否存在。然后,您的代码可以检查返回的记录集是否为空。

如果存在,您只需删除。当记录不存在时,您将得到一个空表(我认为这是您想要的,请查看示例代码)

如果存在,您可以简单地去掉。当记录不存在时,您将得到一个空表(我认为这是您想要的,查看示例代码)

在VB代码中,更改

Return db.ExecuteDataSet(DbCommand).Tables(0)

另外,从存储过程中删除If Exists,因为如果该行存在,您将强制数据库在表中搜索两次UserId=@UserId的记录。

在VB代码中,更改

Return db.ExecuteDataSet(DbCommand).Tables(0)

另外,从存储过程中删除If Exists,因为如果该行存在,则将强制数据库在表中搜索两次UserId=@UserId的记录