我的代码
<WebMethod()> _
Public Function TopKill() As Integer
Dim con As New SqlConnection
con.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=RF_World;Integrated Security=True"
Dim killing As String
con.Open()
Dim cmd As New SqlCommand(("SELECT TOP 20 Name FROM tbl_pvporderview Join tbl_base ON tbl_pvporderview.serial = tbl_base.Serial ORDER BY [Kill] DESC"), con)
Dim killreader As SqlDataReader
killreader = cmd.ExecuteReader()
killreader.Read()
If killreader.HasRows Then
killing = killreader.Item("Name").ToString
End If
con.Close()
Return killing
End Function ' TOP 20 Killer
我的代码
<WebMethod()> _
Public Function TopKill() As Integer
Dim con As New SqlConnection
con.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=RF_World;Integrated Security=True"
Dim killing As String
con.Open()
Dim cmd As New SqlCommand(("SELECT TOP 20 [Kill], Death FROM tbl_pvporderview Join tbl_base ON tbl_pvporderview.serial = tbl_base.Serial ORDER BY [Kill] DESC"), con)
Dim killreader As SqlDataReader
killreader = cmd.ExecuteReader()
killreader.Read()
If killreader.HasRows Then
killing = killreader.Item("Kill").ToString
killing = killreader.Item("Death").ToString
End If
con.Close()
Return killing
End Function ' TOP 20 Killer
我不知道如何解决它。 我真的需要帮助来修复我的代码。 也许任何人都可以帮我修改我的代码
之前感谢
答案 0 :(得分:0)
我首先尝试删除SQL的TOP 20
部分以查看是否抛出SqlDataReader
,认为第一个字段是整数列。如果是,则尝试强制SQL将该字段解释为数字:SELECT TOP 20 CAST([Kill] AS NVARCHAR(20)), Death FROM tbl_pvporderview Join tbl_base ON tbl_pvporderview.serial = tbl_base.Serial ORDER BY [Kill] DESC
答案 1 :(得分:0)
查看您的功能
Public Function TopKill() As Integer
现在看看你要回来的东西
Dim killing As String
....
Return killing
你的函数期望返回一个Integer并且你传递一个String ..实际上是一个String数组
更改为
Public Function TopKill() As String
关于你的第二个问题
你正在用死亡写作杀戮价值......这个函数给出了答案,因为它是“可以”的。作为一个整数,所以VB为你做这个。
<强>更新强>
查看代码,您需要输出数据表而不是字符串(数组) 所以将功能改为
<WebMethod> _
Public Function Function TopKill() As DataTable
Dim con As New SqlConnection
con.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=RF_World;Integrated Security=True"
Dim SelectQry As String = "SELECT TOP 20 Name FROM tbl_pvporderview Join tbl_base ON tbl_pvporderview.serial = tbl_base.Serial ORDER BY [Kill] DESC"
Dim da As New Sqldataadapter()
Dim Command As New SqlCommand(SelectQry, con)
da.selectedCommand = Command
Dim dtresults As DataTable = newDataTable()
Try
con.Open()
da.Fill(dtresults)
Catch ex As Exception
Throw ex
Finally
con.Close()
End Try
Return dtresults
End Function
返回的结果将是一个包含Top 20 Name,Kill和Death记录的数据表。