Halloj. Har följande kod och jag kan bara inte förstå felmeddelandet: Om du stänger din Datareader då?Datareader tror att den är allsmäktig.
Har klippt ut den monstruösa Insert strängen så det inte är något fel i den som sådan
..... Klippa klippa klippa
Dim Conn As SqlConnection = New SqlConnection("Data source=111.222.333.444;Initial Catalog=testdb;UID=sa;PWD=sa")
Sql = New SqlCommand("SELECT * FROM tblPosts WHERE MantleCode='" & sRFFAAS & "'", Conn)
rs = Sql.ExecuteReader()
rs.Read()
If rs.HasRows = False Then
Dim Sqls As SqlCommand
Sqls = New SqlCommand("INSERT INTO tblPosts <klippt>",Conn)
Sqls.ExecuteNonQuery()
RFFCUval = ""
Sqls.Dispose()
End If
rs.Close()
Conn.Close()
Conn.Dispose()
Av detta får jag ut:
<code>Det finns redan en öppen DataReader som har associerats med detta kommando. Det objektet måste stängas först.</code>
Jag har försökt greppa detta, men det finns INGEN annan referens till Sqls, däremot så har jag inte stängt Conn, men det kan väl inte störa, man måste ju kunna köra flera SQL-kommandon mot samma connection, eller?
//Johannes
Sv: Datareader tror att den är allsmäktig.
Dim Conn As SqlConnection = New SqlConnection("Data source=111.222.333.444;Initial Catalog=testdb;UID=sa;PWD=sa")
Sql = New SqlCommand("SELECT * FROM tblPosts WHERE MantleCode='" & sRFFAAS & "'", Conn)
rs = Sql.ExecuteReader()
If Not rs.Read() Then
rs.Close()
Dim Sqls As SqlCommand
Sqls = New SqlCommand("INSERT INTO tblPosts <klippt>",Conn)
Sqls.ExecuteNonQuery()
RFFCUval = ""
Sqls.Dispose()
Else
rs.Close()
End If
Conn.Close()
Conn.Dispose()
Sedan rekomenderar jag dig starkt att använda parametrar istället för att slå samman stränga.
Det är en STOR säkerhetsrisk att bygga dina sql frågor. Låt objekten göra det åt dig med parameter frågor.