Solved

VB.net Loop problem with executereader

Posted on 2009-04-08
2
541 Views
Last Modified: 2013-11-27
I import a csv file into a dataset and then I want to take this information from this dataset and import it to my database. It runs over the first row but then it states:

"Error: System.Data: There is already an open DataReader associated with this Command which must be closed first"

I added cmdstudent.executereader.close() in the loop but it still does not work.

Any suggestions?
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
 
        Dim conn As SqlConnection
        Dim cmdStudent As New SqlCommand
        Dim cmdStudent1 As New SqlCommand
        Dim daStudent As New SqlDataAdapter
        Dim dsStudent As New DataSet
        Dim dtStudent As New DataTable
 
        Dim ds1 As New DataSet
        Dim sCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=Text;"
        Dim objConn As New OleDbConnection(sCon)
 
        objConn.Open()
 
        Dim objCmdSelect As New OleDbCommand("SELECT * FROM daily.csv", objConn)
 
        Dim objAdapter1 As New OleDbDataAdapter
 
        objAdapter1.SelectCommand = objCmdSelect
 
        objAdapter1.Fill(ds1, "daily")
 
        DGV1.DataSource = ds1.Tables(0).DefaultView()
 
        objConn.Close()
 
        Dim i As Integer
 
        Try
            conn = GetConnect()
            conn.Open()
 
 
            For i = 0 To (ds1.Tables(0).Rows.Count - 1)
                cmdStudent = conn.CreateCommand
                cmdStudent.CommandText = "INSERT INTO dailyrounds (date,name,price,no,url,high,highnum,mid,midnum,low,lownum)" & _
                   "VALUES ('" & Date.Today & "','" & _
                   ds1.Tables(0).Rows(i)("name") & "'," & _
                   ds1.Tables(0).Rows(i)("price") & "," & _
                   ds1.Tables(0).Rows(i)("no") & ",'" & _
                   ds1.Tables(0).Rows(i)("url") & "','" & _
                   ds1.Tables(0).Rows(i)("high") & "'," & _
                   ds1.Tables(0).Rows(i)("highnum") & ",'" & _
                   ds1.Tables(0).Rows(i)("mid") & "'," & _
                   ds1.Tables(0).Rows(i)("midnum") & ",'" & _
                   ds1.Tables(0).Rows(i)("low") & "'," & _
                   ds1.Tables(0).Rows(i)("lownum") & ") "
 
                cmdStudent.ExecuteReader.Read()
                cmdStudent.ExecuteReader.Close()
            Next i
 
            Refresh_Form()
            conn.Close()
 
        Catch ex As Exception
            MsgBox("Error: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "Connection Error !!")
        End Try
 
    End Sub

Open in new window

0
Comment
Question by:ralphcarter2008
2 Comments
 
LVL 16

Accepted Solution

by:
sunithnair earned 500 total points
ID: 24099265
I think your line number 50 should be cmdStudent.ExecuteNonQuery() since you are trying to insert the values into a database table. ExecuteReader is just for reading the data and ExecuteNonQuery is used for DML queries.
0
 
LVL 1

Author Closing Comment

by:ralphcarter2008
ID: 31568123
Good catch!!
0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now