输入字符串有时格式不正确

时间:2015-06-18 15:56:28

标签: vb.net csv

我在因特网上发现了一段代码,因为我需要编写与.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

1 个答案:

答案 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