尝试使用 sqlclient.sqldatareader 时出现错误?

Getting error when trying to use sqlclient.sqldatareader?

我收到错误消息说我的语法不正确,但我觉得一切正常。

在使用 datareader 的那一行,它说 "And" 一词的语法不正确。

我已经尝试了很多改变来尝试让它工作但无济于事。有帮助吗?

SQL:-

Dim sqlline1 As String = String.Format("Select count(debtor_id) As 
numbernew, sum(debtor_original_debt) As valuenew, SUM(debtor_balance)
From debtors Where debtor_cohort_id Like {0} + {2} And (debtor_client_id >= 
{0} And debtor_client_id <= {1})", clientid_start, clientid_end, Cohort4)

函数出错:-

Public Function populatestringwithsql(command As String) As String
    Dim conn As String = "a server connection"
    Dim i = 1
    Dim fields(15) As String
    Dim numberoffields As Integer
    Using connObj As New SqlClient.SqlConnection(conn)
        Using cmdObj As New SqlClient.SqlCommand(command, connObj)
            connObj.Open()
            Dim readobj As SqlClient.SqlDataReader = cmdObj.ExecuteReader()
            Dim schematable As DataTable = readobj.GetSchemaTable()
            readobj.Close()

            For Each dr As DataRow In schematable.Rows
                numberoffields = schematable.Columns.Count
                For Each dc As DataColumn In schematable.Columns

                    fields(i) = dc.ColumnName
                    i += 1
                Next
            Next

            Using readerObj As SqlDataReader = cmdObj.ExecuteReader
                'This will loop through all returned records 
                While readerObj.Read
                    If fields(1) <> "" Then
                        fields(1) = readerObj(fields(1)).ToString
                    End If
                    If fields(2) <> "" Then
                        fields(2) = readerObj(fields(2)).ToString
                    End If
                    If fields(3) <> "" Then
                        fields(3) = readerObj(fields(3)).ToString
                    End If
                    If fields(4) <> "" Then
                        fields(4) = readerObj(fields(4)).ToString
                    End If
                    If fields(5) <> "" Then
                        fields(5) = readerObj(fields(5)).ToString
                    End If
                    If fields(6) <> "" Then
                        fields(6) = readerObj(fields(6)).ToString
                    End If
                    If fields(7) <> "" Then
                        fields(7) = readerObj(fields(7)).ToString
                    End If
                    If fields(8) <> "" Then
                        fields(8) = readerObj(fields(8)).ToString
                    End If
                    If fields(9) <> "" Then
                        fields(9) = readerObj(fields(9)).ToString
                    End If
                    If fields(10) <> "" Then
                        fields(10) = readerObj(fields(10)).ToString
                    End If
                    If fields(11) <> "" Then
                        fields(11) = readerObj(fields(11)).ToString
                    End If
                    If fields(12) <> "" Then
                        fields(12) = readerObj(fields(12)).ToString
                    End If
                    If fields(13) <> "" Then
                        fields(13) = readerObj(fields(13)).ToString
                    End If
                    If fields(14) <> "" Then
                        fields(14) = readerObj(fields(14)).ToString
                    End If
                    If fields(15) <> "" Then
                        fields(15) = readerObj(fields(15)).ToString
                    End If
                End While
            End Using
            connObj.Close()
        End Using
    End Using

    Dim stringend As Text.StringBuilder

    For Each field In fields
        stringend.Append(field)

    Next

    Return stringend.ToString

End Function

我已经尝试了所有的调试方法,但没有成功。

查看 Where debtor_cohort_id Like {0} + {2} And ...,您似乎在尝试连接 client_idcohort4。除非 client_id 或 cohort4 包含通配符,否则使用 = 而不是 LIKE。

您可能需要用单引号将您喜欢的比较内容括起来 Where debtor_cohort_id Like '{0} + {2}' And ...

最简单的方法是打印您的 sqlline1 变量以准确揭示它的问题所在。