Beim Schreiben von ASP-Programmen wird im Allgemeinen VBScript verwendet, aber dies ist nicht die einzige Option, die auch verwendet werden kann. Bei der Verwendung von JScript als ASP-Sprache gibt es jedoch im Vergleich zur Verwendung von VBScript einige kleinere Unannehmlichkeiten, z. B. die GetRows-Methode von RecordSet.
Beim Betrieb einer Datenbank in ASP wird im Allgemeinen das RecordSet-Objekt verwendet. Wenn Sie sich auf die Programmeffizienz konzentrieren, können Sie das Record-Set-Objekt mit der GetRows-Methode in ein Array konvertieren Die Verwendung des RecordSet-Objekts ist viel schneller und kann das RecordSet-Objekt so schnell wie möglich nach dem Herausnehmen des Arrays freigeben, wodurch die Ressourcennutzung reduziert wird.
In VBScript wird mit der RecordSet.GetRows-Methode ein zweidimensionales Array abgerufen, und die darin enthaltenen Daten können durch Durchlaufen des Arrays abgerufen werden.
Angenommen, es gibt eine Datenbank mit einer Tabelle namens „mytable“ und drei Feldern mit den Namen „id“, „first“ und „second“.
Kopieren Sie den Codecode wie folgt:
'codebyxujiwei
'http://www.xujiwei.cn/
'Variablen definieren
Dimconn,rs,data,recN,i
'Mit Datenbank verbinden
Setconn=Server.CreateObject(ADODB.Connection)
conn.OpenProvider=Microsoft.Jet.OLEDB.4.0;DataSource=&_
Server.MapPath(data.mdb)
„Holen Sie sich den Datensatz
Setrs=conn.Execute(SELECTid,first,secondFROMmytable)
'Holen Sie sich das Datenarray
data=rs.GetRows()
'Schließen Sie das Recordset und geben Sie das Objekt frei
rs.Close()
Setrs=Nichts
'Ermitteln Sie die Anzahl der Datensätze
recN=UBound(data,2)
'Schleifenausgabedaten
Fori=0TorecN
'Beachten Sie, dass Array-Indizes bei 0 beginnen
'Daten in der Datenbank anzeigen
Response.Write(ID:&data(0,i)&,First:&data(1,i)&_
,Zweitens:&data(2,i)&<br/>)
Nächste
'Schließen Sie die Datenbankverbindung und geben Sie das Objekt frei
conn.Close()
Setconn=Nichts
%>
Bei der Verwendung von JScript tritt jedoch ein Problem auf: JScript verfügt nicht über ein zweidimensionales Array. Wenn Sie die von GetRows erhaltenen Daten verwenden möchten, müssen Sie das zweidimensionale Array in VBScript in ein JScript-Array konvertieren kann erkennen, das heißt, die Elemente sind ein eindimensionales Array von Arrays.
In JScript verfügt das mit der GetRows-Methode erhaltene Array über eine toArray-Methode, die in ein Array konvertiert werden kann, das in JScript verwendet werden kann. Dieses Array ist jedoch eindimensional, was bedeutet, dass wir es wie in VBScript verwenden möchten , wir müssen es noch selbst tun, um die Konvertierung durchzuführen.
Nachdem ich MSDN konsultiert und verwandte Artikel im Internet durchsucht hatte, habe ich eine Array-Konvertierungsfunktion für die Verwendung der GetRows-Methode in JScript geschrieben.
Kopieren Sie den Codecode wie folgt:
<scriptsprache=JScriptrunat=server>
//codebyxujiwei
//http://www.xujiwei.cn/
//Variablen definieren
varconn,rs,vdata,data,recN,i;
//Mit Datenbank verbinden
conn=Server.CreateObject(ADODB.Connection);
conn.Open(Provider=Microsoft.Jet.OLEDB.4.0;DataSource=+
Server.MapPath(data.mdb));
//Den Datensatzsatz abrufen
rs=conn.Execute(SELECTid,first,secondFROMtest);
//Holen Sie sich das Datenarray und konvertieren Sie es in einen in JScript verfügbaren Array-Typ
vdata=rs.GetRows().toArray();
//Ermitteln Sie die Anzahl der Felder in der Datentabelle
i=rs.Fields.Count;
//Schließen Sie das Recordset und geben Sie das Objekt frei
rs.Close();
rs=null;
//Array konvertieren
data=transArray(vdata,i);
//Anzahl der Datensätze abrufen
recN=data.length;
//Schleifenausgabedaten
for(i=0;i<recN;i++){
//Beachten Sie, dass Array-Indizes bei 0 beginnen
//Zeigt die Daten in der Datenbank an
Response.Write(ID:+data[i][0]+,First:+data[i][1]+
,Zweitens:+data[i][2]+<br/>);
}
//Schließen Sie die Datenbankverbindung und geben Sie das Objekt frei
conn.Close();
conn=null;
//Array-Konvertierungsfunktion
//byxujiwei
//Parameter: arr-Das von der GetRows-Methode erhaltene Objekt und das von der toArray-Methode erhaltene Array
//fieldslen – die Anzahl der Felder in der Datentabelle
functiontransArray(arr,fieldslen){
varlen=arr.length/fieldslen,data=[],sp;
for(vari=0;i<len;i++){
data[i]=newArray();
sp=i*fieldslen;
for(varj=0;j<fieldslen;j++)
data[i][j]=arr[sp+j];
}
Rückgabedaten;
}
</script>
Für einige Daten, die nicht häufig aktualisiert, aber häufig verwendet werden, können Sie das Anwendungsobjekt verwenden, um sie nach erfolgreichem Abrufen des Datenarrays zwischenzuspeichern, wodurch die Anzahl der Abfragen an die Datenbank reduziert und die Leistung von ASP bis zu einem gewissen Grad optimiert wird.