如何通过 VB.net 中的另一个 GUID 列 select GUID 列?我的 Select 查询不起作用

How to select GUID column by another GUID column in VB.net?My Select query does not work

我是编程新手,有机会在另一个开发人员项目中工作和维护。

该项目是使用 ASP.Net Vb.Net 和 SQl 服务器构建的。

我正在尝试 select 来自 table 的主键 ID(实际上是一个 GUID)。

SQID = Core.DB.GetString("SELECT id FROM SQC WHERE sid = " & sid)

在 Table SQC 中,主键是 id,它是 guid,sid 也是 guid,它是另一个 table.

的主键

我以前的开发人员将代码开发为 select 字符串变量 GetString 函数,其中 GetString 是

        Shared Function GetString(ByVal selectQueryText As String, ByVal ParamArray params As SqlParameter()) As String
        Dim dt As DataTable = Nothing
        Try
            dt = GetData(selectQueryText, CommandType.Text, params)
            If dt.Rows.Count = 0 Then
                Return ""
            Else
                If TypeOf dt.Rows(0)(0) Is DBNull Then
                    Return ""
                Else
                    Return CStr(dt.Rows(0)(0))
                End If
            End If
        Finally
            If dt IsNot Nothing Then dt.Dispose()
        End Try
    End Function

当我调试代码时,我的进程进入 GetString 函数,然后从 Get String 转到 GetData 函数

Shared Function GetData(ByVal selectCommandText As String, ByVal selectCommandType As CommandType, ByVal ParamArray params As SqlParameter()) As DataTable
        Dim conn As SqlConnection = Nothing
        Try
            conn = GetOpenSqlConnection()

            Return GetData(conn, selectCommandText, selectCommandType, params)
        Finally
            If conn IsNot Nothing Then conn.Dispose()
        End Try
    End Function

    Shared Function GetData(ByVal conn As SqlConnection, ByVal selectCommandText As String, ByVal selectCommandType As CommandType, ByVal ParamArray params As SqlParameter()) As DataTable
        If conn Is Nothing Then Return GetData(selectCommandText, selectCommandType, params)

        Dim sa As SqlDataAdapter = Nothing
        Try
            sa = New SqlDataAdapter(selectCommandText, conn)
            sa.SelectCommand.CommandType = selectCommandType

            Dim dt As New DataTable
            Try
                For Each param As SqlParameter In params
                    sa.SelectCommand.Parameters.Add(param)
                Next

                sa.Fill(dt)

                Return dt
            Catch ex As Exception
                dt.Dispose()
                Throw ex
            End Try
        Finally
            If sa IsNot Nothing Then sa.Dispose()
        End Try
    End Function

在异常处理的 Try Catch 区域中,代码中断并抛出异常错误。它说 Incorrect syntax near 'a379'。这是 sid (GUID) 的第一个部分。我的意思是 sid 值是 9417A379-6371-432F-9DA5-BCFC46DD95A1

我不知道该如何处理。我想 select 来自 SQC table 的 id 并将其存储在一个变量中。

我正在寻找您的意见和建议。由于我是编程界的新手,请也指出我的错误。

谢谢

看来您的问题可以这样解决:

SQID = Core.DB.GetString("SELECT id FROM SQC WHERE sid = '" & sid & "'")

但您应该知道,这种代码风格对 SQL 注入是开放的,您可能想看看参数化查询的方法(即不要将此项目中的内容视为良好实践) .