1. Die Frage stellen
In einem kürzlich durchgeführten Projekt bin ich auf ein Problem mit der ASP-Operation von FoxPro-Bibliothekstabellen (*.DBF) gestoßen. Tatsächlich gibt es viele Anwendungssoftware, die DBF-Tabellen verwenden. Viele Freunde sind ratlos, wie man diese Daten in einer Netzwerkumgebung verwendet.
Ich habe auch viele Informationen überprüft und konnte keine detaillierte Erklärung der Lösung finden. Nach dem Testen habe ich dieses Problem zunächst gelöst und werde es mit allen teilen.
In diesem Artikel wird versucht, die folgenden Probleme zu lösen:
1. ASP fügt sich in die von FoxPro generierte freie Tabelle (*.dbf-Datei) ein
2. Speichern Sie mehrere Arten von Daten und Grafikdateien gleichzeitig in der DBF-Tabelle
(Das Beispielprogramm ist unter Set conn = Server.CreateObject("ADODB.Connection") verfügbar.
connstr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;"&_
"SourceDB=" & Server.MapPath(db) &";Exclusive=Nein"
conn.Open connstr
Im obigen Code sind Daten der relative Pfad, in dem sich meine DBF-Datei befindet (relativ zu der Datei, in der sich dieser Code befindet), und er wird über Server.MapPath(db) in einen absoluten Pfad konvertiert.
http://www.connectionstrings.com stellt Verbindungszeichenfolgen für viele Arten von Bibliothekstabellendateien bereit. Für DBF-Dateien sind die angegebenen Verbindungszeichenfolgen:
„Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:mydbpath;“
Ich konnte mit dieser Verbindungszeichenfolge keine Verbindung herstellen und habe keine weiteren Tests durchgeführt. Interessierte Freunde können die obige Zeichenfolge ausprobieren.
.www.downcodes.com
2. Deklarieren Sie den Tabellennamen in der SQL-Anweisung
Sie können den Tabellennamen, der in der SQL-Anweisung ausgeführt werden soll, in der Form [Tabellenname] oder [Tabellenname.Erweiterung] deklarieren. Der Tabellendateiname lautet beispielsweise t1.dbf und die SQL-Anweisung lautet:
Wählen Sie * aus [t1] oder wählen Sie * aus [t1.dbf]
3. Speichervorgänge verschiedener Datentypen
DBF unterstützt nicht viele Datentypen, unter denen Date (Datumstyp), Memo (Notiztyp) und General (allgemeiner Typ) erwähnenswert sind. Hier konzentrieren wir uns auf Datentypdaten. Beim Speichern von Grafikdateien werden die Typen Memo und Gen verwendet, was später erläutert wird.
Im Allgemeinen verwende ich zwei Methoden zum Schreiben von Datenbankoperationen: Eine besteht darin, die INSERT-Anweisung zu verwenden, und die andere darin, die Addnew-Methode zu verwenden. Bei DBF-Tabellen unterscheiden sich diese beiden Methoden geringfügig.
Beachten Sie bei der Verwendung der INSERT-Anweisung, dass das Schreibformat der Daten vom Typ „Datum“ {^jjjj-mm-tt} ist und sich das Trennzeichen von „#“ und „SQL Server“ von Access unterscheidet. Die spezifische SQL-Anweisung lautet:
in [t1.dbf] (Name, Geburtstag) Werte einfügen ('MyName',{^1970-1-1})
Bei der Verwendung der addnew-Methode lautete der Code, den ich ursprünglich verwendet habe:
rst.open „[t1]“,conn,0,3
rst.addnew
rst(0).value = "MeinName"
rst(1).value = {^1970-1-1}
erstes Update
Erst.schließen
Beim Betrieb von SQL Server und Access gibt es kein Problem, beim Betrieb von DBF-Dateien gibt es jedoch ein Problem. Nach dem Experimentieren habe ich endlich die richtige Methode gefunden:
sql = „select * from t1“
rst.open sql,conn,0,3
rst.addnew
rst(0).value = "MeinName"
rst(1).value = {^1970-1-1}
erstes Update
rst.close
Bitte beachten Sie, dass der Unterschied zwischen den beiden oben genannten Codeteilen hauptsächlich in der SQL-Anweisung liegt. Wie bereits erwähnt, können Sie in SQL-Anweisungen Tabellendateien in der Form [Tabellenname] oder [Tabellenname.dbf] deklarieren. Bei Verwendung der Methode addnew darf der Tabellenname jedoch keine Erweiterung haben und es können keine eckigen Klammern hinzugefügt werden. andernfalls wird die Meldung „Kein einfacher Tabellenname, kann nicht aktualisiert werden“ angezeigt.
4. Speicherung von Grafikdateien
In der DBF-Tabelle können sowohl Memo- als auch allgemeine Felder zum Speichern von Grafiken, Audio und Video, Text und anderen Dateien verwendet werden (siehe http://www.chinadesign.com.cn/NewsContents1.asp?id=2663 ). Hier setzen wir den Feldtyp auf memo(binary) (Binärvorbereitungstyp), verwenden die Methode rst(n).AppendChunk(), um die resultierenden Bildbinärdaten zu schreiben, und verwenden die Methode Response.BinaryWrite(), um die Binärdatei wiederherzustellen Daten zum Bild. Es gibt viele Artikel zum Thema Image Warehousing, daher werde ich hier nicht näher darauf eingehen.
Ich habe es versucht, das Feld „Allgemein“ zum Speichern von Bildern zu verwenden, aber es hat nicht funktioniert, also habe ich es nicht noch einmal versucht.
5. Löschung von Daten
Sie können die Löschanweisung verwenden, um die Daten zu löschen. Wenn Sie jedoch die Tabellendatei nach dem Löschen öffnen, stellen Sie fest, dass die Daten nur zum Löschen markiert sind und nicht tatsächlich aus der Tabelle gelöscht werden. Verwenden Sie in Foxpro den Befehl pack, um Daten dauerhaft zu löschen. Nach Überprüfung einiger Informationen wurde festgestellt, dass VB den Packvorgang nicht implementieren kann und VBS ihn natürlich nicht implementieren kann. Die allgemeine Lösung besteht darin, die Daten in der Tabelle (natürlich ohne Löschmarkierung) von Zeit zu Zeit in eine neue Tabelle zu importieren, die ursprüngliche Tabelle zu löschen und die neue Tabelle dann in den ursprünglichen Tabellennamen umzubenennen.
6. Daten und Bilder werden gleichzeitig in der Datenbank gespeichert
Dieses Problem ist nicht Gegenstand dieses Artikels. Es gibt viele Artikel im Internet, die Lösungen anbieten. Ich werde sie hier übrigens erwähnen.
Ich habe diese Funktion mit dem komponentenlosen Upload-Programm „Huajing“ implementiert. Einige Freunde fragen sich vielleicht: Der „Huajing“-Upload ist als Datei geschrieben und es gibt keine Möglichkeit, ihn in der Datenbank zu speichern. Nicht schlecht, aber mit einer kleinen Änderung können Sie die Binärdaten des Bildes abrufen und diese dann in der Datenbank speichern. In meinem Beispiel sind die Änderungen im Umweltprogramm kommentiert, bitte beziehen Sie sich darauf.
4. Fazit
In diesem Artikel wird hauptsächlich der Betrieb freier DBF-Tabellen durch ASP erläutert. Wenn es sich um eine DBC-Bibliothek handelt, wird die entsprechende Verbindungszeichenfolge im Beispiel in inc/conn.asp angegeben.
An diesem Punkt glaube ich, dass Freunde ein allgemeines Verständnis für die Funktionsweise von DBF-Tabellen haben. In Kombination mit meinen Beispielen glaube ich, dass Sie weitere Funktionen entwickeln können.
VIEL GLÜCK!