I want to import csv data to sql server. I implemented it with hardcoded file path and file name it works. But when I change it into FileUpload ( file to be choose in browser ) I'm receiving Object variable or With block variable not set. Issue passing table data into CSVInfo datable
File Path in config file
<add key="Contract" value="C:\Test\" />
HTML Markup
<table width="25%" align="center" border="0">
<tr align="left" >
<td align="left">
<asp:FileUpload ID="FileUpload1" runat="server" />
</td>
<td align="right">
<asp:button ID="btnbtnUpload" OnClick="FUpload" CssClass="button" runat="server" Width="80" CausesValidation="False" Text="Upload" Visible="True" />
</td>
</tr>
</table>
Import / Upload CSV file data to SQL Server database table
Partial Class Contract
Inherits System.Web.UI.Page
Public CSVInfo = New DataTable("CSVInfo")
Public Sub FUpload(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnbtnUpload.Click
If FileUpload1.HasFile Then
Dim FileName As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim Extension As String = Path.GetExtension(FileUpload1.PostedFile.FileName)
Dim FolderPath As String = ConfigurationManager.AppSettings("Contract")
If Trim(Extension).ToUpper() <> ".CSV" Then
Notify.ShowError("The uploading file should only be .CSV")
Exit Sub
End If
Dim FilePath As String = (FolderPath + FileName)
FileUpload1.SaveAs(FilePath)
**'CSVInfo = GetCsvData("C:\Test\", "Contract.CSV")** hardcoded file path and name which works
CSVInfo = GetCsvData(FolderPath, FileName)
For Each row As DataRow In CSVInfo.Rows
Dim Com As String = row(0).ToString
Dim Exc As String = row(1).ToString
Dim ComC As String = row(2).ToString
Dim structMySQL(3) As OMNIDbOperations.IExecute.structureSQL
Dim strParaStruc As OMNIDbOperations.IExecute.structureSQLPara
Dim objErrMsg As New OMNIDbOperations.ErrorMessage
structMySQL(0).strSQL = "[Insert_Contract]"
structMySQL(1).strSQL = "@Com,SqlDbType.varchar"
structMySQL(2).strSQL = "@Exc,SqlDbType.varchar"
structMySQL(3).strSQL = "@ComC,SqlDbType.varchar"
Dim myArray As Array = Array.CreateInstance(GetType(String), 1, 4)
myArray.SetValue(Com, 0, 1)
myArray.SetValue(Exc, 0, 2)
myArray.SetValue(ComC, 0, 3)
Try
Dim objDbExe As New OMNIDbOperations.IExecute
Dim sSaveMsg
strParaStruc = objDbExe.ExecuteInsert(adoFrontCon, structMySQL, myArray)
sSaveMsg = strParaStruc.strReturnMsg
Dim sStrMsg As String
Catch ex As Exception
End Try
Next
End If
End Sub
Public Function GetCsvData(ByVal strFolderPath As String, ByVal strFileName As String) As DataTable
Try
Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolderPath & ";Extended Properties='text;HDR=Yes;FMT=Delimited;CharacterSet=65001;'"
Dim conn As New OleDbConnection(strConnString)
Try
conn.Open()
Dim cmd As New OleDbCommand("SELECT * FROM [" & strFileName & "]", conn)
Dim da As New OleDbDataAdapter()
da.SelectCommand = cmd
Dim ds As New DataSet()
da.Fill(ds)
da.Dispose()
Return ds.Tables(0)
Catch
Return Nothing
Finally
conn.Close()
End Try
Catch ex As Exception
End Try
End Function