Bonjour,
j'ai une application qui se sert d'une db access.
je souhaiterai savoir si il est possible de creer cette base + les tables a partir du code (j'ai un doute si je suis sur le bon forum ...)
Merci de vos reponses.
Bonjour,
j'ai une application qui se sert d'une db access.
je souhaiterai savoir si il est possible de creer cette base + les tables a partir du code (j'ai un doute si je suis sur le bon forum ...)
Merci de vos reponses.
A essayer dans un projet console:
tu spécifies dans la console le path complet et l'extension mdb.
eg. : C:\TMP\MADB.mdb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 using System; using System.Collections.Generic; using System.Text; namespace CreateMDB { class Program { static void Main(string[] args) { string _name = Console.ReadLine(); Type _adox = Type.GetTypeFromProgID("ADOX.Catalog"); if (_adox != null) { object _object = Activator.CreateInstance(_adox); _object.GetType().InvokeMember("Create",System.Reflection.BindingFlags.InvokeMethod, null, _object, new object[]{ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _name + ";" }); Console.WriteLine("Database created"); Console.ReadLine(); } } } }
ok je vais testé ca. Mais dans mon cas il faudrait pouvoir creer une table et sa structure pour que ce soit utilisable.
je continue ma recherche, merci de ton aide.
Ben je vois pas le rapport :
1 - tu génére le fichier MDB
2 - Tu te connectes et tu envois les tables.
.....
Je suis pas certain de comprendre ce qui te manque.?
Solution 1 : tu peux recopier une base de reference (Fichier mdb) avec des tables vides et l'exploiter ensuite.
Solution 2 : ADOX
Créer la base (vide sans tables) :
Ajouter les tables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 using ADOX; // add a COM reference to "Microsoft ADO Ext. x.x for DDL and Security" static void CreateMdb(string fileNameWithPath) { ADOX.Catalog cat = new ADOX.Catalog(); string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5"; cat.Create(String.Format(connstr, fileNameWithPath)); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 //Set a COM Reference to "Microsoft ADO Extensions for DDL and Security" (ADOX) private ADOX.Catalog cat = new ADOX.Catalog(); private ADOX.Table tbl = new ADOX.Table(); private string db_file_path; db_file_path = ActiveWorkbook.Path + "\\abc.mdb"; //connect to the Access database cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + db_file_path; //Create a table tbl.Name = "Prospects"; // First, fields are appended to the table object // Then the table object is appended to the Tables collection tbl.Columns.Append "Name", adVarWChar; tbl.Columns.Append "Company", adVarWChar; tbl.Columns.Append "Phone", adVarWChar; tbl.Columns.Append "Address", adVarWChar; cat.Tables.Append tbl; Set cat = null; MessageBox.Show()MsgBox "Table created!";
Je vois pas trop la différence sauf que dans la solution 2 il faut qu'il puisse référence la com directement dans son projet et la redistribuer.
Plusieurs options :
Soit tu passes par l'interrop com ADO (pour moi, bof...)
Soit tu passes par des instructions SQL ("CREATE Table ...")
Soit tu utilises un ORM qui peut générer les tables depuis les entités
Par rapport au code que je t'ai envoyé :
Tu crées la base access en utilisant le code que je t'ai envoyé
Si la création est un succès;
Tu crées une connection à cette base et tu travailles avec :
Tuto développez.com
Il faut juste que tu dissocies le fait de créer un fichier MDB avec le fait de travailler une connection ADO.NET vers access.
Partager