Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

VB.net Loop problem with executereader

Posted on 2009-04-08
2
545 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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

790 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