我在因特网上发现了一段代码,因为我需要编写与.csv文件的datareader连接。我提取的数据库文件范围从10列,一直到200列。在某些查询中,我得到的输入字符串格式不正确;我相信我的代码转换部分会将读者值更改为字符串。附上的是代码。
Dim sw As New StreamWriter(filename)
Try
Using Conn As New Odbc.OdbcConnection(ConnStr)
Using Cmd As New Odbc.OdbcCommand(query, Conn)
Conn.Open()
Using dr As Odbc.OdbcDataReader = Cmd.ExecuteReader()
Dim fields As Integer = dr.FieldCount - 1
While dr.Read()
Dim sb As New StringBuilder()
Dim i As Integer = 0
While i <= fields
If i <> fields Then
sep = ","
Else
sep = ""
End If
sb.Append(dr(i) + sep)
i += 1
End While
sw.WriteLine(sb.ToString())
End While
End Using
End Using
sw.Close()
sw.Dispose()
Conn.Close()
Conn.Dispose()
End Using
答案 0 :(得分:2)
最有可能的罪魁祸首是
sb.Append(dr(i) + sep)
VB使用&
运算符来连接字符串,尝试用
sb.Append(dr(i) & sep)
或者更好的是使用不同的逻辑,而不是
If i <> fields Then
sep = ","
Else
sep = ""
End If
sb.Append(dr(i) + sep)
做类似
的事情sb.Append(dr(i))
If i <> fields Then sb.Append(",")
编辑:添加了对可能的空值的检查:
If dr(i) Is DbNull.Value OrElse dr(i) Is Nothing Then
sb.Append("[No Data]")
Else
sb.Append(dr(i))
End If