You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Basic中从SQL Server获取类JS对象/PHP关联数组形式的数据

当然可以!在VB.NET里,你完全可以实现类似JavaScript对象、PHP关联数组的结构化数据,从SQL Server读取后还能轻松操作并在MsgBox里展示。下面给你两种常用的实现方式:

方式一:用Dictionary(Of String, Object)模拟关联数组

这种方式和PHP关联数组的用法最接近,键是字段名,值是对应的数据:

Imports System.Data.SqlClient
Imports System.Collections.Generic

Public Class Form1
    Private Sub btnFetchData_Click(sender As Object, e As EventArgs) Handles btnFetchData.Click
        ' 补全你的连接字符串,记得添加身份验证(比如Windows集成验证)
        Dim connString As String = "Server=DESKTOP-CAKCP8H;Database=info;Integrated Security=True;"
        
        ' Using语句会自动释放资源,避免连接泄漏
        Using con As New SqlConnection(connString)
            Try
                con.Open()
                ' 替换成你的查询语句,指定要获取的字段
                Dim query As String = "SELECT id, name, age FROM YourTable WHERE id = 1"
                Using cmd As New SqlCommand(query, con)
                    Using reader As SqlDataReader = cmd.ExecuteReader()
                        If reader.Read() Then
                            ' 创建字典来存储字段和对应值,模拟关联数组
                            Dim userDict As New Dictionary(Of String, Object) From {
                                {"id", reader("id")},
                                {"name", reader("name")},
                                {"age", reader("age")}
                            }

                            ' 操作数据示例:给年龄加1
                            userDict("age") = CInt(userDict("age")) + 1

                            ' 拼接内容并在MsgBox显示
                            Dim showText As String = $"ID: {userDict("id")}{vbCrLf}姓名: {userDict("name")}{vbCrLf}更新后年龄: {userDict("age")}"
                            MsgBox(showText, MsgBoxStyle.Information, "用户信息")
                        Else
                            MsgBox("未找到匹配记录!", MsgBoxStyle.Exclamation)
                        End If
                    End Using
                End Using
            Catch ex As Exception
                MsgBox($"出错啦:{ex.Message}", MsgBoxStyle.Critical)
            End Try
        End Using
    End Sub
End Class
方式二:用自定义类模拟JS对象(更推荐)

如果追求类型安全、更清晰的结构,自定义类的方式和JS对象的使用体验一致,还能避免类型转换错误:

首先定义一个和数据库字段对应的类:

' 定义用户类,字段和数据库表对应
Public Class User
    Public Property Id As Integer
    Public Property Name As String
    Public Property Age As Integer
End Class

然后在数据读取逻辑里填充这个类:

' 替换上面字典部分的代码
If reader.Read() Then
    ' 实例化User类并填充数据
    Dim user As New User With {
        .Id = reader.GetInt32(reader.GetOrdinal("id")),
        .Name = reader.GetString(reader.GetOrdinal("name")),
        .Age = reader.GetInt32(reader.GetOrdinal("age"))
    }

    ' 操作数据示例:年龄加1
    user.Age += 1

    ' 在MsgBox展示
    Dim showText As String = $"ID: {user.Id}{vbCrLf}姓名: {user.Name}{vbCrLf}更新后年龄: {user.Age}"
    MsgBox(showText, MsgBoxStyle.Information, "用户信息")
End If

几个小提醒:

  • 连接字符串一定要补全身份验证信息,比如Integrated Security=True(Windows身份验证)或者User ID=你的账号;Password=你的密码(SQL Server身份验证)
  • 始终用Using语句包裹数据库连接、命令、阅读器,确保资源自动释放
  • 自定义类的方式更适合复杂业务场景,类型检查更严格,代码可读性更高

内容的提问来源于stack exchange,提问作者Developer K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:31:45