如何在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
相关产品推荐
相关产品推荐

