Tobi: Optimaler Code fuer Connection und Recordset

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

  1. 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

    1. 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

      1. 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

        1. 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