尝试使用 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_id
和 cohort4
。除非 client_id 或 cohort4 包含通配符,否则使用 = 而不是 LIKE。
您可能需要用单引号将您喜欢的比较内容括起来 Where debtor_cohort_id Like '{0} + {2}' And ...
最简单的方法是打印您的 sqlline1 变量以准确揭示它的问题所在。
我收到错误消息说我的语法不正确,但我觉得一切正常。
在使用 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_id
和 cohort4
。除非 client_id 或 cohort4 包含通配符,否则使用 = 而不是 LIKE。
您可能需要用单引号将您喜欢的比较内容括起来 Where debtor_cohort_id Like '{0} + {2}' And ...
最简单的方法是打印您的 sqlline1 变量以准确揭示它的问题所在。