我正在尝试读取.csv文件以将其内容导入SQL表
我收到错误:
ExecuteReader: Connection property has not been initialized.
在此代码的最后一行:
Function ImportData(ByVal FU As FileUpload, ByVal filename As String, ByVal tablename As String) As Boolean
Try
Dim xConnStr As String = "Driver={Microsoft Text Driver (*.txt; *.csv)};dbq=" & Path.GetDirectoryName(Server.MapPath(filename)) & ";extensions=asc,csv,tab,txt;"
' create your excel connection object using the connection string
Dim objXConn As New System.Data.Odbc.OdbcConnection(xConnStr.Trim())
objXConn.Open()
Dim objCommand As New OdbcCommand(String.Format("SELECT * FROM " & Path.GetFileName(Server.MapPath(filename)), objXConn))
If objXConn.State = ConnectionState.Closed Then
objXConn.Open()
Else
objXConn.Close()
objXConn.Open()
End If
' create a DataReader
Dim dr As OdbcDataReader
dr = objCommand.ExecuteReader()
答案 0 :(得分:2)
您的问题的解决方案如下:
Dim xConnStr As String = "Driver={Microsoft Text Driver (*.txt; *.csv)};dbq=" & Path.GetDirectoryName(Server.MapPath(filename)) & ";extensions=asc,csv,tab,txt;"
' create your excel connection object using the connection string
Dim objXConn As New System.Data.Odbc.OdbcConnection(xConnStr.Trim())
Dim objCommand As New OdbcCommand(String.Format("SELECT * FROM " & Path.GetFileName(Server.MapPath(filename)), objXConn))
objCommand.Connection.Open()
' create a DataReader
Dim dr As OdbcDataReader
dr = objCommand.ExecuteReader()
连接传递给命令,但命令需要打开连接,如上所示,行objCommand.Connection.Open()
因此删除初始objXconn.Open()
答案 1 :(得分:0)
由于您没有将OdbcConnection用于create the command,因此在执行命令之前需要在命令上设置Connection property:
objCommand.Connection = objXConn
答案 2 :(得分:0)
在调用ExecuteReader之前,你可能已经关闭了它。
//this line has rightly assign the connection to the command
Dim objCommand As New OdbcCommand(String.Format("SELECT * FROM " & Path.GetFileName(Server.MapPath(filename)), objXConn))
但连接必须处于打开状态。你可能会在某处以某种方式关闭它
If objXConn.State = ConnectionState.Closed Then
objXConn.Open()
Else
objXConn.Close()
objXConn.Open()
End If