我正在尝试将Email csv文件上传到我的应用程序并解析到我的数据库中。基本上我需要的是数据库中的第一列自动分配ID,并在每次添加条目时增加1。然后我需要代码来读取我的CSV文件的前3列,然后更改为下一行。请参阅我的VB代码,数据库结构和CSV示例
Protected Sub Upload(sender As Object, e As EventArgs)
'Upload and save the file
Dim csvPath As String = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName)
FileUpload1.SaveAs(csvPath)
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(3) {New DataColumn("ID", GetType(Integer)), New DataColumn("Subject", GetType(String)), New DataColumn("Body", GetType(String)), New DataColumn("From", GetType(String))})
Dim csvData As String = File.ReadAllText(csvPath)
For Each row As String In csvData.Split(ControlChars.Lf)
If Not String.IsNullOrEmpty(row) Then
dt.Rows.Add()
Dim i As Integer = 0
For Each cell As String In row.Split(","c)
dt.Rows(dt.Rows.Count - 1)(i) = cell
i += 1
Next
End If
Next
Dim consString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As New SqlConnection(consString)
Using sqlBulkCopy As New SqlBulkCopy(con)
'Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.Emails"
con.Open()
sqlBulkCopy.WriteToServer(dt)
con.Close()
End Using
End Using
End Sub
我收到的错误消息是:
类型' System.ArgumentException'的例外情况发生在System.Data.dll中但未在用户代码中处理
附加信息:输入字符串格式不正确。无法存储<"主题">在ID列中。预期的类型是Int32。
答案 0 :(得分:0)
您的表ID
正在使用Identity
,因此您无需将ID
添加到dt.Columns.AddRange
因为它会尝试插入ID列时“T