Sql 如何将数据表行转换为字符串
尝试将数据表行中的值插入wpf组合框,然后 我试图将datatable中的行转换为字符串,但它在brngname变量中生成System.data.datarow。如何将数据表中的行转换为字符串?Sql 如何将数据表行转换为字符串,sql,database,wpf,vb.net,datatable,Sql,Database,Wpf,Vb.net,Datatable,尝试将数据表行中的值插入wpf组合框,然后 我试图将datatable中的行转换为字符串,但它在brngname变量中生成System.data.datarow。如何将数据表中的行转换为字符串? 从该行获取字段值,而不是将整个DataRow对象转换为字符串: Dim a As New ClsKoneksi Dim query As String query = "SELECT KodeBarang FROM Barang" dt = a.executequerydata(
从该行获取字段值,而不是将整个DataRow对象转换为字符串:
Dim a As New ClsKoneksi
Dim query As String
query = "SELECT KodeBarang FROM Barang"
dt = a.executequerydata(query)
Dim names As New List(Of String)
For i = 0 To dt.Rows.Count() - 1
Dim brngname As String = Convert.ToString(dt.Rows(i))
names.Add(brngname)
Next
For i = 0 To names.Count() - 1
BARANGLIST.Items.Add(names(i).ToString)
Next
名单似乎是多余的:
Dim brngname As String = Convert.ToString(dt.Rows(i).Item("KodeBarang"))
您得到的错误是由于没有从System.data.datarow数据类型到string数据类型的可用转换,因此Covert.ToString函数无法执行此任务。请注意,dt.Rowsi是数据行,而不是字符串!。
即使在您的示例中,您只有一个字段,即一列,更通用的解决方案可能包括通过在列内循环而在行内循环来序列化整个表,并使用首选的列/行分隔符构建字符串。dt实际上是一个数据表,我只查询列KodeBarang,我已经在visual studio中查看了它,它只生成了具有默认表名的表和所有KodeBarang数据,但当我将其转换为字符串时,它为什么生成system.data.datarowSystem.data.DataRow是任何DataRow的默认字符串表示形式。它没有有意义的覆盖!这就解决了问题,我忘记了dt.rowsi.itemi中的项目。我认为dt.rows0引用第0行并直接获取值,而无需指定列。您可能会问如何获取该字段的值,而不是将整行(无论有多少字段)转换为字符串。您想做什么?将值转换为字符串两次,然后将其添加到列表中?Convert.ToString本质上是对ToString的调用。如果要将结果读入列表,可以使用LINQ,例如var List=dt.AsEnumerable.Selectrow=>row.FieldKodeBarang.ToList@PanagiotisKanavos您的LINQ示例是C;OP标记了vb。net@PanagiotisKanavos我为dt表添加了返回值。我试图做的是,从dt表中添加项到列表中,该表由访问数据库的查询填充,然后将其添加到BARANGLIST中,它是XAML中的一个组合框。这不是一个错误。本质上是对ToString的调用。DataRow不重写ToString,因此调用Object.ToString,返回类型的name@Panagiotis:是的,我使用的“错误”一词不正确。我添加了表格的图片。如果dt.rows0未引用行,那么如何从行中获取数据值?dt.rows0是一行。它不是一根弦。行包含字段值,字段值可以是字符串,也可以转换为字符串@ASh已经回答了:dt.Rowsi.Item。。。
Dim a As New ClsKoneksi
Dim query As String
query = "SELECT KodeBarang FROM Barang"
dt = a.executequerydata(query)
For i = 0 To dt.Rows.Count() - 1
BARANGLIST.Items.Add(dt.Rows(i).Item("KodeBarang"))
Next