1. Poser la question
Dans un projet récent, j'ai rencontré un problème avec le fonctionnement par ASP des tables de la bibliothèque FoxPro (*.DBF). En réalité, il existe en effet de nombreux logiciels d'application qui utilisent les tables DBF. Comment utiliser ces données dans un environnement réseau a laissé de nombreux amis perplexes.
J'ai également vérifié de nombreuses informations et je n'ai pas trouvé d'explication détaillée de la solution. Après les tests, j'ai d'abord résolu ce problème et je le partagerai avec tout le monde.
Cet article tente de résoudre les problèmes suivants :
1. ASP rejoint la table libre (fichier *.dbf) générée par FoxPro
2. Stockez plusieurs types de fichiers de données et graphiques dans la table dbf en même temps
(L'exemple de programme est disponible à partir de Set conn = Server.CreateObject("ADODB.Connection")
connstr = "Pilote={Pilote Microsoft Visual FoxPro};SourceType=DBF;"&_
"SourceDB=" & Server.MapPath(db) &";Exclusif=Non"
conn.Open connstr
Dans le code ci-dessus, data est le chemin relatif où se trouve mon fichier DBF (par rapport au fichier où se trouve ce code), et il est converti en chemin absolu via Server.MapPath(db).
http://www.connectionstrings.com fournit des chaînes de connexion pour de nombreux types de fichiers de table de bibliothèque. Pour les fichiers DBF, les chaînes de connexion indiquées sont :
"Pilote={Pilote Microsoft dBASE (*.dbf)};DriverID=277;Dbq=c:mydbpath;"
Je n'ai pas réussi à me connecter à l'aide de cette chaîne de connexion et je n'ai pas effectué de tests supplémentaires. Les amis intéressés peuvent essayer la chaîne ci-dessus.
.www.downcodes.com
2. Déclarez le nom de la table dans l'instruction SQL
Vous pouvez déclarer le nom de la table à utiliser dans l'instruction SQL sous la forme de [nom de la table] ou [nom de la table.extension]. Par exemple, le nom du fichier de table est t1.dbf et l'instruction SQL est :
sélectionnez * dans [t1] ou sélectionnez * dans [t1.dbf]
3. Opérations de stockage de différents types de données
DBF ne prend pas en charge beaucoup de types de données, parmi lesquels il convient de noter Date (type de date), Mémo (type de note) et Général (type général). Ici, nous nous concentrons sur les données de type Data, les types Memo et Gen sont utilisés lors du stockage des fichiers graphiques, ce qui sera expliqué plus tard.
J'utilise généralement deux méthodes pour écrire des opérations de base de données, l'une consiste à utiliser l'instruction insert et l'autre à utiliser la méthode addnew. Pour les tables DBF, ces deux méthodes sont légèrement différentes.
Lorsque vous utilisez l'instruction insert, veuillez noter que le format d'écriture des données de type Date est {^aaaa-mm-jj} et que le délimiteur est différent de celui d'Access et de celui de SQL Server. L'instruction SQL spécifique est :
insérer dans les valeurs [t1.dbf] (nom, anniversaire) ('MyName',{^1970-1-1})
Lors de l'utilisation de la méthode addnew, le code que j'ai utilisé à l'origine était :
rst.open "[t1]",conn,0,3
d'abord.ajouternouveau
rst(0).value = "MonNom"
premier(1).value = {^1970-1-1}
première mise à jour
d'abord.fermer
Il n'y a aucun problème lors de l'utilisation de SQL Server et Access, mais il y a un problème lors de l'utilisation des fichiers DBF. Après avoir expérimenté, j'ai finalement trouvé la bonne méthode :
sql = "sélectionner * à partir de t1"
rst.open sql,conn,0,3
d'abord.ajouternouveau
rst(0).value = "MonNom"
premier(1).value = {^1970-1-1}
première mise à jour
rst.close
Veuillez noter que la différence entre les deux morceaux de code ci-dessus réside principalement dans l'instruction SQL. Comme mentionné précédemment, dans les instructions SQL, vous pouvez déclarer des fichiers de table sous la forme de [nom de la table] ou [nom de la table.dbf], mais lorsque vous utilisez la méthode addnew, le nom de la table ne peut pas avoir d'extension et les crochets ne peuvent pas être ajoutés. sinon, le message "Pas un simple nom de table, ne peut pas être mis à jour" s'affichera.
4. Stockage des fichiers graphiques
Dans la table DBF, les champs mémo et généraux peuvent être utilisés pour stocker des graphiques, des fichiers audio et vidéo, du texte et d'autres fichiers (veuillez vous référer à http://www.chinadesign.com.cn/NewsContents1.asp?id=2663 ). Ici, nous définissons le type de champ sur memo(binary) (type de préparation binaire), utilisons la méthode rst(n).AppendChunk() pour écrire les données binaires de l'image résultante et utilisons la méthode Response.BinaryWrite() pour restaurer le binaire. données à imager. Il existe de nombreux articles liés à l’entreposage d’images, je n’entrerai donc pas dans les détails ici.
Quant à l'utilisation du champ Général pour stocker des images, je l'ai essayé, mais cela n'a pas fonctionné, donc je n'ai pas réessayé.
5. Suppression des données
Vous pouvez utiliser l'instruction delete pour supprimer les données, mais lorsque vous ouvrez le fichier de table après la suppression, vous constatez que les données sont uniquement marquées pour suppression et ne sont pas réellement supprimées de la table. Dans Foxpro, utilisez la commande pack pour supprimer définitivement les données. Après avoir vérifié certaines informations, il a été dit que VB ne pouvait pas implémenter l'opération pack, et bien sûr, VBS ne pouvait pas l'implémenter. La solution générale consiste à importer les données de la table (sans marque de suppression bien sûr) dans une nouvelle table de temps en temps, à supprimer la table d'origine, puis à renommer la nouvelle table avec le nom de la table d'origine.
6. Les données et les images sont stockées dans la base de données en même temps
Ce problème n'entre pas dans le cadre de cet article. Il existe de nombreux articles sur Internet qui proposent des solutions, je les mentionnerai ici d'ailleurs.
J'ai implémenté cette fonction en utilisant le programme de téléchargement sans composant "Huajing". Certains amis peuvent demander : le téléchargement « Huajing » est écrit sous forme de fichier et il n'y a aucun moyen de le stocker dans la base de données. Pas mal, mais avec un léger changement, vous pouvez obtenir les données binaires de l'image puis les stocker dans la base de données. Dans mon exemple, les changements du programme environnement sont commentés, merci de vous y référer.
4. Conclusion
Cet article traite principalement du fonctionnement par ASP des tables libres DBF. S'il s'agit d'une bibliothèque DBC, la chaîne de connexion correspondante est donnée dans inc/conn.asp dans l'exemple.
À ce stade, je pense que mes amis ont une compréhension générale du fonctionnement des tables DBF. En combinaison avec mes exemples, je pense que vous pouvez développer plus de fonctions.
BONNE CHANCE!