如何用VB.NET将数据库表中的数据转换为字符串数组?
完善VB.NET读取数据库并转换为字符串数组的代码
看起来你已经在做从数据库读取课程数据并展示到ListView的工作,同时想要把读取到的数据转换成字符串数组对吧?我来帮你把代码补全,顺便优化几个关键点:
完整代码示例
' 假设conn已经是打开的SqlConnection对象 Dim strQ As String = "SELECT * FROM Courses" Dim cmd As New SqlCommand(strQ, conn) Dim da As New SqlDataAdapter(cmd) Dim ds As New DataSet() da.Fill(ds, "Courses") ' 给ListView添加列头 For Each col As DataColumn In ds.Tables(0).Columns Me.ListView1.Columns.Add(col.ColumnName) Next ' 用来存储所有行的字符串数组(用List更灵活,行数不确定时很方便) Dim courseDataList As New List(Of String()) Dim courseTable As DataTable = ds.Tables(0) ' 遍历每一行数据,转换为字符串数组并添加到ListView For Each row As DataRow In courseTable.Rows ' 初始化当前行的字符串数组,长度等于列数 Dim rowStringArray(courseTable.Columns.Count - 1) As String For colIndex As Integer = 0 To courseTable.Columns.Count - 1 ' 处理数据库空值(DBNull),避免直接ToString报错 rowStringArray(colIndex) = If(row(colIndex) Is DBNull.Value, "", row(colIndex).ToString()) Next ' 把当前行的字符串数组加入集合 courseDataList.Add(rowStringArray) ' 同时添加到ListView(直接用字符串数组初始化ListViewItem更简洁) Me.ListView1.Items.Add(New ListViewItem(rowStringArray)) Next ' 如果需要转换成二维字符串数组,直接调用ToArray即可 Dim courseStringArray As String()() = courseDataList.ToArray()
几个重要的优化点
- 处理DBNull值:数据库中的空字段会返回
DBNull.Value,直接调用ToString()会引发异常,这里用If运算符判断,把空值转为空字符串。 - 用List存储数组:因为查询返回的行数是不确定的,用
List(Of String())动态添加每行数据比预先声明二维数组更灵活,最后可以轻松转成标准的二维字符串数组。 - 简化ListView列头添加:直接遍历
DataColumn集合比用索引循环更直观易读。 - 简化ListView项添加:
ListViewItem支持直接传入字符串数组来初始化,省去了手动添加子项的步骤。
内容的提问来源于stack exchange,提问作者Viper
相关产品推荐
相关产品推荐

