web-dev-qa-db-fra.com

Lire et écrire dans une base de données d'accès en utilisant Javascript

je veux d'abord mentionner que je suis conscient que dans l'interaction Web avec les bases de données devrait
toujours avec les langues côté serveur pour des raisons de sécurité et pour le fait que javascript
en l'état n'offre pas et n'est pas compatible avec le système de fichiers Windows.

cela dit, je suis confronté à une situation critique et j'essaie de penser de manière créative.
Je ne suis pas autorisé à accéder à un script côté serveur et à SQL.

et je dois créer une application basée sur le client pour un intranet qui sera capable de stocker des données au fur et à mesure.

J'ai trouvé 2 solutions jusqu'à présent, mais aucune d'entre elles n'a suffisamment de documentation pour que j'utilise correctement.

l'un est une bibliothèque javascript appelée ACCESSdb qui peut être trouvée ici: ACCESSdb
malheureusement, je ne comprenais pas comment l'utiliser pour écrire ou lire des données à partir de la base de données ...

et l'autre est ces 3 morceaux de code:

Ajout d'un enregistrement:

function AddRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='/\dbName.mdb'");
adoRS.Open("Select * From tblName", adoConn, 1, 3);

adoRS.AddNew;
adoRS.Fields("FieldName").value = "Quentin";
adoRS.Update;

adoRS.Close();
adoConn.Close();
}  

Suppression d'un enregistrement:

function DeleteRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoRS.Open("Select * From tblName Where FieldName = 'Quentin'", adoConn, 1, 3);
adoRS.Delete;
adoRS.Delete;

adoRS.Close();
adoConn.Close();
}  

Modification d'un enregistrement:

function EditRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoRS.Open("Select * From tblName Where FieldName = 'Quentin'", adoConn, 1, 3);

adoRS.Edit;
adoRS.Fields("FieldName").value = "New Name";
adoRS.Update;

adoRS.Close();
adoConn.Close();
}  

parmi eux, seul le ajoute un nouvel enregistrement celui qui a fonctionné pour moi pour une raison quelconque ...
J'ai également constaté que pour lire la valeur d'une cellule de la première ligne, je n'avais qu'à écrire:

alert(adoRS(cellNum));  

mais comment puis-je obtenir la valeur des cellules dans les dernières lignes? disons (ligne 3, cellule 5).

Merci d'avoir lu jusqu'ici! J'apprécierai beaucoup votre aide!

Jake

12
Jake

Tout d'abord, assurez-vous que '/ \' et '\' (dans la chaîne de connexion) ne sont qu'une faute de frappe dans SO.

Deuxièmement, voici une version de la commande Supprimer:

function DeleteRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoCmd = new ActiveXObject("ADODB.Command");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoCmd.ActiveConnection = adoConn;
adoCmd.CommandText = "Delete * From tblName Where FieldName = 'Quentin'";
adoCmd.Execute();

adoConn.Close();
}

Et, commande Edit (sans boucle -> met à jour tous les enregistrements [correspondants]):

function EditRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoCmd = new ActiveXObject("ADODB.Command");

adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='\\dbName.mdb'");
adoCmd.ActiveConnection = adoConn;
adoCmd.CommandText = "Update tblName Set FieldName = 'New Value' Where FieldName = 'Quentin'";
adoCmd.Execute();

adoConn.Close();
}  

Veuillez noter que je n'ai pas testé cela (je n'ai pas accès pour le moment), donc il pourrait y avoir des bugs de syntaxe ...

J'espère que cela fonctionne et aide.

4
Igor Turman