kan man returnera en datareader som en datasource ? alltså : Kan ge dig ett exempel på hur man KAN använda datareadern med DataSource + databind. jag vill stega igenom det som returneras från en databas som ex. via en oracledataread, oledbdatareader osv. fast som ett gemensamt attribut typ datasource. Ett litet inflik bara, använder du Oracle Datareader måste du har Oracle 9.1 eller senare vilket kan vara bra att veta. Visst kan du returnera en DataReader, tex om du i din 'datasource'-klass skriver: jo det låter ju vettigt. har lekt lite med det där förut. tänkte bryta ut det hela i en egen klass men det gick ju åt skogen eftersom jag ville returnera en datareader, efter att jag gjort close på connection... =)fråga ang. datareader o datasource
Datasource dr = returnDataReader();Sv: fråga ang. datareader o datasource
vb.net
Dim CmdText As String = "SELECT kolumn1, kolumn2 FROM tblK"
Dim ObjConn As New OleDbConnection(ConfigurationSettings.AppSettings("Conn"))
Dim Cmd As New OleDbCommand(CmdText, ObjConn)
ObjConn.Open()
Dim MyReader As OleDbDataReader = Cmd.ExecuteReader()
MinDataList.DataSource = MyReader
MinDataList.DataBind()
ObjConn.Close()
String CmdText = "SELECT kolumn1, kolumn2 FROM tblK";
OleDbConnection ObjConn(ConfigurationSettings.AppSettings["Conn"]);
OleDbCommand Cmd = new OleDbCommand(CmdText, ObjConn);
ObjConn.Open();
OleDbDataReader MyReader = Cmd.ExecuteReader();
MinDataList.DataSource = MyReader;
MinDataList.DataBind();
ObjConn.Close();
Hoppas jag inte missförstod dig.
/m
Sv: fråga ang. datareader o datasource
måste jag själv gör en 'adapter'-klass för att göra den till datasource ?Sv: fråga ang. datareader o datasource
Använder du sen oledb-connection så borde du rimligen kunna använda alla typer av datakällor bara genom att ändra connectionsträngen?!Sv: fråga ang. datareader o datasource
OracleDataReader odr = myCmd.ExecuteReader();
return odr;
Men du måste då komma ihåg att stänga connection till databasen efter att du använt odr ojektet i din metod/funksjon...har för mig att det kan bli lite struligt det där :P
Kanske bättre att använda ett DataSet (eller DataTable) som inte kräver en "open connection"....?Sv: fråga ang. datareader o datasource
Sv: fråga ang. datareader o datasource
' används för select-frågor för att snabbt stänga
Shared Function ReturnDataset(ByVal query As String) As DataSet
Dim conn As New SqlConnection(GetConnectionString)
Dim adapter As New SqlDataAdapter
Dim dataset As New DataSet
' anslut och försök utföra arbetet
Try
adapter.SelectCommand = New SqlCommand(query, conn)
adapter.Fill(dataset)
Catch ex As SystemException
' om fel uppstår
Throw New ApplicationException("SQL: Kan inte köra frågan:" & Err.Description & query)
Finally
' stäng oavsett vad
conn.Close()
End Try
' returnera data om vi kan
Return dataset
End Function
Public Shared Function ReturnDataReader(ByVal sqlquery As String) As SqlDataReader
' observera att connection ligger öppen i denna rutin och tar minne
' i servern, men håller tråden öppen och pooling verkar bli bättre
' Create Instance of Connection and Command Object
Dim myConnection As SqlConnection = New SqlConnection(GetConnectionString)
Dim myCommand As SqlCommand = New SqlCommand(sqlquery, myConnection)
' Mark the Command as a SPROC
myCommand.CommandType = CommandType.Text
Try
' öppnar anslutningen och exekverar frågan
myConnection.Open()
Dim result As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
' returnerar resultatet
Return result
Catch ex As SystemException
' adderar info till loggfilen
' meddelar felet
Throw New SystemException("Fel vid anrop av sql-fråga: " & sqlquery & "-" & Err.Description)
End Try
End Function
' Kör ett query innehållande sp-namn och dess parametrar
' returnerar ingenting
Shared Sub ExecuteQuery(ByVal sqlquery As String)
' endast för ins/upd/del
' Skapa instans av en Connection samt Command Object
Dim connectionstring As String = GetConnectionString()
Dim Con As New SqlConnection(connectionstring)
Dim cmd As SqlCommand
' öppnar connection
Con.Open()
' skickar in datat
cmd = New SqlCommand(sqlquery, Con)
' kör sp:n eller sql-satsen
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw New SystemException("Fel vid anrop av sql-fråga: " & sqlquery & "-" & Err.Description)
End Try
' frigör objekten
Con.Close()
End Sub