繁体   English   中英

webservice vb.net读取数据sql server 2008 R2

[英]webservice vb.net read data sql server 2008 R2

当我想从sql server读取数据时,我的程序有2个问题。 我的问题

  1. 当我想从sql server 2008 r2读取数据类型varchar时出现错误,如http://prntscr.com/apni8g ,当我从sql读取数据类型整数时没有错误。

我的代码

<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
  1. 当我读取2个数据整数时为什么只输出一个这样的http://prntscr.com/apnjnk

我的代码

<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

我不知道如何解决它。 我真的需要帮助来修复我的代码。 也许任何人都可以帮我修改我的代码

谢谢你

我首先尝试删除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

看看你的功能

Public Function TopKill() As Integer

现在看看你要回来的东西

Dim killing As String
....
Return killing

你的函数期望返回一个Integer并且你传递一个String ..实际上是一个String数组

改成

Public Function TopKill() As String

至于你的第二个问题

你完全用死亡写了Kill值......函数给出了一个答案,因为它是Cast'able'作为一个整数,所以VB为你做这个。

UPDATE

查看代码,您需要输出数据表而不是字符串(数组)所以将函数更改为

    <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记录的数据表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM