这段代码有几个问题。除了杰里米提到的几点:
Long
VB6 中的内容现在在Integer
VB.NET 中。Long
现在是 64 位整数。
用于System.IO.Path.Combine
组合路径字符串。Combine
自动添加缺少的反斜杠并删除多余的反斜杠。Path.Combine(scExportTemplatePath, "scExport.mdb")
该Field
属性不再具有默认属性。非索引属性永远不是 VB.NET 中的默认属性。使用 获取字段值.Fields("segmentID").Value
。
将其值转换为适当的类型:seg = Convert.ToInt32(.Fields("segmentID").Value)
注意:VB 的Integer
类型只是System.Int32
.
您总是添加到同一个数组字段。我不知道你到底在想什么。如果您只想添加一个字段,则可以使用List(Of String)
. 如果您为每条记录添加多个字段,那么List(Of String())
(即字符串数组列表)将是合适的。列表具有自动增长的优势。
Dim list As New List(Of String())
Do While Not .EOF
Dim values = New String(2) {}
values(0) = Convert.ToString(.Fields("field_A").Value)
values(1) = Convert.ToString(.Fields("field_B").Value)
values(2) = Convert.ToString(.Fields("field_C").Value)
list.Add(values)
recSet.MoveNext()
Loop
但是,如果您创建一个自定义类来存储字段值,则更容易理解:
Console.WriteLine("{0} {1} ({2})", user.FirstName, user.LastName, user.DateOfBirth)
...读起来比:
Console.WriteLine("{0} {1} ({2})", values(0), values(1), values(2))
在 VB.NET 中,您还有其他使用数据库的可能性:
Dim list As New List(Of String())
Using conn = New OleDb.OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyPath\MyDb.mdb")
Dim sql = "SELECT myStuff FROM myTable"
Dim command = New OleDbCommand(sql, conn)
conn.Open()
Using reader As OleDbDataReader = command.ExecuteReader()
While reader.Read()
Dim values = New String(reader.FieldCount - 1) {}
For i = 0 To reader.FieldCount - 1
values(i) = Convert.ToString(reader.GetValue(i))
Next
list.Add(values)
End While
End Using
End Using
请注意,该Using
语句最后会自动关闭资源。即使发生错误并且代码过早终止。
在 VB.NET 中,您可以写入这样的文件(不使用 fso,它不像 .NET)
Using writer As New StreamWriter("myFile.txt", False)
writer.WriteLine("line 1")
writer.WriteLine("line 2")
writer.WriteLine("line 3")
End Using