我是编程新手,有机会在另一个开发人员项目中工作和维护。
该项目是使用ASP.Net Vb.Net和SQl Server构建的。
我正在尝试从表中选择主键ID(实际上是GUID)。
SQID = Core.DB.GetString("SELECT id FROM SQC WHERE sid = " & sid)
在表SQC中,主键是id,它是guid,而sid也是guid,它是另一个表的主键。
我以前的开发人员开发了代码来选择字符串变量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
在exeption的Try Catch区域处理代码中断并抛出异常错误。它在' a379' 附近说语法不正确。这是sid(GUID)的第一部分。我的意思是sid值 9417A379-6371-432F-9DA5-BCFC46DD95A1
我不知道如何处理这个问题。我想从SQC表中选择id并将其存储在变量中。
我正在寻找你的意见和建议。因为我是编程世界的新手,请指出我的错误。
由于
答案 0 :(得分:2)
看起来您的问题可以像以下一样修复:
SQID = Core.DB.GetString("SELECT id FROM SQC WHERE sid = '" & sid & "'")
但是你应该知道这种代码风格对SQL注入是开放的,你可能想看看你的查询参数化的方法(即不要把这个项目中的内容当作好的做法)。