Optimaler Code fuer Connection und Recordset
Tobi
- asp.net
Hallo,
ich versuche gerade, eienn moeglichst optimalen (performanten) Code fuer eine Anbindung an eine ACCESS Datenbank (Connection und Recordset) zu schreiben.
Welche Loesung ist am besten? Das query mit stored procedures ausfuehren oder doch mit SQL Statement, das query result in ein recordset schreiben und dann auslesen oder das recordset mit GetRows auslesen und in eine variable uebergeben oder ist eine andere Moeglichkeit besser?
Hier mein Code mit Bitte um Verbesserungsvorschlaege:
' Connection String
Dim MM_VarConn
MM_VarConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Pfad_zur_DB];"
' connection object
Dim con
Set con = Server.CreateObject("ADODB.Connection")
' connecting to database
con.Open MM_VarConn
' recordset object
Dim rs
' executing stored procedure
Set rs = con.Execute ("exec SelectProc")
und vielleicht besser direkt mit GetRows auslesen und schliessen:
Dim ds
ds = rs.GetRows
rs.Close
Set rs.ActiveConnection = Nothing
Und/oder...sollte ich die Daten ueber rs.Fields in Variablen auslesen um dadurch den SQL-Server zu entlasten?
Danke & Gruss
Tobi
Hallo Tobi,
das Thema finde ich sehr interessant. Jedoch werde ich aus dem, was du schreibst nicht ganz schlau.
ich versuche gerade, eienn moeglichst optimalen (performanten) Code fuer eine Anbindung an eine ACCESS Datenbank (Connection und Recordset) zu schreiben.
Welche Loesung ist am besten? Das query mit stored procedures ausfuehren oder doch mit SQL Statement, das query result in ein recordset schreiben und dann auslesen oder das recordset mit GetRows auslesen und in eine variable uebergeben oder ist eine andere Moeglichkeit besser?
...
Und/oder...sollte ich die Daten ueber rs.Fields in Variablen auslesen um dadurch den SQL-Server zu entlasten?
Was verwendest du für eine DB? Access oder SQL-Server und welche Versionen? Und warum möchtest du für ein Recordset eine Stored Procedure verwenden, nennt man das dann nicht View oder Abfrage?
Obwohl ich nicht mit Verbesserungsempfehlungen dienen kann, bin ich sehr daran interessiert mehr über dieses Thema zu erfahren.
Bisher bin ich immer so vorgegangen:
Ich habe mit CreateObject eine neue Instanz des Recordset-Objekts erzeugt und diese mittels Schleifen z.B. in einer Tabellenform dargestellt.
Gruß, Stefan
Hallo Stefan,
Hallo Tobi,
das Thema finde ich sehr interessant. Jedoch werde ich aus dem, was du schreibst nicht ganz schlau.
Was verwendest du für eine DB? Access oder SQL-Server und welche Versionen? Und warum möchtest du für ein Recordset eine Stored Procedure verwenden, nennt man das dann nicht View oder Abfrage?
Wie ich erwaehnte, verwende ich eine MS Access DB (2000). Stored Procedure moechte ich verwenden, weil angeblich Performancevorteile dadurch entstehen (Actually, in Access werden Stored Procedures auch Stored Queries genannt, was aber das selbe ist...). Die Stored Procedures verwende ich an Stelle der SQL Abfrage. Macht aber auch das Recordset ueberfluessig....
siehe:
http://www.aspfaq.com/show.asp?id=2201
http://www.stardeveloper.com/articles/display.html?article=2001050101&page=1
Obwohl ich nicht mit Verbesserungsempfehlungen dienen kann, bin ich sehr daran interessiert mehr über dieses Thema zu erfahren.
Bisher bin ich immer so vorgegangen:
Ich habe mit CreateObject eine neue Instanz des Recordset-Objekts erzeugt und diese mittels Schleifen z.B. in einer Tabellenform dargestellt.
Ja, das ist der "normale" Weg. Mit GetRows kann man aber z.b. nicht nur einzelne Felder abfragen, sondern eben Zeilen (Recordset wird in Array geschrieben). Dadurch kann man das Recordset nach Uebergabe in den Array schliessen und dadurch den DB-Server entlasten.
Ich selbst beschaeftige mich aber auch erst seit 2 Wochen mit ASP/VBScript, daher wollte ich die Meinung von "erfahrenen" Programmierern hoeren...
Danke & Gruss
Tobi
Gruß, Stefan
Hallo Tobi
Wie ich erwaehnte, verwende ich eine MS Access DB (2000). Stored Procedure moechte ich verwenden, weil angeblich Performancevorteile dadurch entstehen (Actually, in Access werden Stored Procedures auch Stored Queries genannt, was aber das selbe ist...). Die Stored Procedures verwende ich an Stelle der SQL Abfrage. Macht aber auch das Recordset ueberfluessig....
Dass es Stored Queries unter Access 2000 gibt, wußte ich nicht, lediglich Stored Procedures unter SQL-Server waren mir bislang bekannt. Gibt es Stored Queries auch unter Access 97?
siehe:
http://www.aspfaq.com/show.asp?id=2201
http://www.stardeveloper.com/articles/display.html?article=2001050101&page=1
Danke für die Links, besonders letzterer ist echt interessant.
Bisher bin ich immer so vorgegangen:
Ich habe mit CreateObject eine neue Instanz des Recordset-Objekts erzeugt und diese mittels Schleifen z.B. in einer Tabellenform dargestellt.Ja, das ist der "normale" Weg. Mit GetRows kann man aber z.b. nicht nur einzelne Felder abfragen, sondern eben Zeilen (Recordset wird in Array geschrieben). Dadurch kann man das Recordset nach Uebergabe in den Array schliessen und dadurch den DB-Server entlasten.
In den Artikeln oben werden aber Aktionsabfragen angesprochen (INSERT, UPDATE, DELETE). Gibt es bei SELECTS auch Performancevorteile? Und müssen die Variablennamen in einer Stored Query mit @ beginnen?
Ich selbst beschaeftige mich aber auch erst seit 2 Wochen mit ASP/VBScript, daher wollte ich die Meinung von "erfahrenen" Programmierern hoeren...
Ich beschäftige mich schon erheblich länger mit ASP. Peinlich, dass ich so wenig weiss. Aber man verwendet sooft immer wieder den gleichen Kram, den man eben schon x-mal verwendet hat.
Danke auch und Gruß,
Stefan
Hallo Stefan,
Dass es Stored Queries unter Access 2000 gibt, wußte ich nicht, lediglich Stored Procedures unter SQL-Server waren mir bislang bekannt. Gibt es Stored Queries auch unter Access 97?
Ich bin nicht 100% sicher, muesste aber bereits unter Access 97 funktionieren.
In den Artikeln oben werden aber Aktionsabfragen angesprochen (INSERT, UPDATE, DELETE). Gibt es bei SELECTS auch Performancevorteile?
Das ist genau die Frage, die sich mir stellte, ob es ueberhaupt Performancevorteile gibt....Habe widerspruechliches dazu im Web entdeckt.
Und müssen die Variablennamen in einer Stored Query mit @ beginnen?
Muesste in dem stardevelopers-Artikel stehen....
Ich selbst beschaeftige mich aber auch erst seit 2 Wochen mit ASP/VBScript, daher wollte ich die Meinung von "erfahrenen" Programmierern hoeren...
Ich beschäftige mich schon erheblich länger mit ASP. Peinlich, dass ich so wenig weiss. Aber man verwendet sooft immer wieder den gleichen Kram, den man eben schon x-mal verwendet hat.
Hmpf. Ja, das kenne ich...abe wer kann schon staendig auf dem laufenden bleiben? Ich habe dazu keine Zeit...muss ab und zu auch arbeiten...;o)
Gruss
Tobi