database tempo - Comment je crée la base de données d'accès à l'exécution en C#?





executer un (5)


La première chose à faire est d'obtenir une référence COM à Microsoft ADO Ext. XX pour DDL et sécurité. Le XX représente n'importe quelle version que vous avez sur votre machine. La mienne était la version 2.7, mais avec Visual Studio 2008, elle a été mise à jour vers la version 6.0.

alt text http://blog.jrpsoftware.com/content/binary/WindowsLiveWriter/CreateanAccessDatabaseinC_10DDD/AddReference_2.png

Une fois que vous avez ajouté la référence, ADOX sera ajouté à la section d'utilisation de votre code.

alt text http://blog.jrpsoftware.com/content/binary/WindowsLiveWriter/CreateanAccessDatabaseinC_10DDD/Using_2.png

Ensuite, vous voudrez créer le catalogue pour la base de données. Insérez le nom de fichier que vous souhaitez dans la chaîne suivante et transmettez-le à CatalogClass.

CatalogClass cat = new CatalogClass();  
string tmpStr;  
string filename = "Sample.MDB";   
tmpStr = "Provider=Microsoft.Jet.OLEDB.4.0;";   
tmpStr += "Data Source=" + filename + ";Jet OLEDB:Engine Type=5";  
cat.Create(tmpStr);

L'étape suivante consiste à créer la table et les colonnes pour votre base de données. C'est une opération assez simple comme le montre l'exemple ci-dessous.

 Table nTable = new Table(); 
 nTable.Name = "PersonData"; 
 nTable.Columns.Append("LastName", DataTypeEnum.adVarWChar, 25);
 nTable.Columns.Append("FirstName", DataTypeEnum.adVarWChar, 25);
 nTable.Columns.Append("Address 1", DataTypeEnum.adVarWChar, 45);
 nTable.Columns.Append("Address 2", DataTypeEnum.adVarWChar, 45); 
 nTable.Columns.Append("City", DataTypeEnum.adVarWChar, 25);
 nTable.Columns.Append("State", DataTypeEnum.adVarWChar, 2);
 nTable.Columns.Append("Zip", DataTypeEnum.adVarWChar, 9);
 cat.Tables.Append(nTable);

La dernière étape est très importante ou vous obtiendrez une erreur lorsque vous fermez votre application. Une fois que toutes les tables et colonnes ont été ajoutées, vous devrez libérer les objets com correctement et dans le bon ordre.

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(nTable); 
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.Tables);    
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection); 
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);

C'est ça. Vous devriez maintenant avoir une base de données Access à laquelle vous pouvez écrire. J'espère que cela t'aides.

Référence: John Russell Plant - Créer une base de données Access en C #

Comment je crée la base de données d'accès à l'exécution en C #?




static void IF_EXISTS_DELETE_AND_CREATE(string cn)
{
    //cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =";
    //cn += AppDomain.CurrentDomain.BaseDirectory.ToString() + "test.mdb"; 
    try
    {
        OleDbConnection connection = new OleDbConnection(cn);
        object[] objArrRestrict;
        objArrRestrict = new object[] { null, null, null, "TABLE" };
        connection.Open();
        DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, objArrRestrict);
        connection.Close();
        string[] list;
        if(schemaTable.Rows.Count > 0)
        {
            list = new string[schemaTable.Rows.Count];
            int i = 0;
            foreach (DataRow row in schemaTable.Rows)
            {
                list[i++] = row["TABLE_NAME"].ToString();
            }
            for ( i = 0; i < list.Length; i++)
            {
                if(list[i] == "TEMP")
                {
                    string deletedl = "DROP TABLE TEMP";
                    using (OleDbConnection conn = new OleDbConnection(cn))
                    {
                        using (OleDbCommand cmd = new OleDbCommand(deletedl, conn))
                        {

                            conn.Open();
                            cmd.ExecuteNonQuery();
                            conn.Close();
                        }
                    }
                    break;
                }
            }
        }
        string ddl = "CREATE TABLE TEMP (USERID INTEGER NOT NULL,[ADATE] TEXT(20), [ATIME] TEXT(20))";
        using(OleDbConnection conn = new OleDbConnection(cn))
        {                    
            using(OleDbCommand cmd = new OleDbCommand(ddl, conn))
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
        }
    }
    catch (System.Exception e)
    {
        string ex = e.Message;
    }
}



Créez une base de données d'accès vide et stockez-la dans vos fichiers de ressources.

Maintenant, quand vous voulez l'utiliser, récupérez cette base de données à partir de vos ressources et copiez-la où vous voulez, renommez-la comme vous voulez et exécutez votre script de configuration de base de données pour créer des tables par défaut et charger des valeurs.




Cet article de John Russell Plant explique comment vous le feriez en détail avec des exemples de code. Il y a trois étapes:

  1. Créez le catalogue.
  2. Créez les tables.
  3. Relâchez les objets COM pertinents.



J'ai résumé la plupart des versions de ce tableau. Les seules personnes manquantes devraient être les versions ASP.NET Core. J'ai également ajouté différentes versions de ASP.NET MVC.

Notez qu'ASP.NET 5 a été renommé ASP.NET Core 1.0 et ASP.NET MVC 6 a été renommé ASP.NET Core MVC 1.0.0. Je crois que ce changement est survenu vers janvier 2016.

J'ai inclus la date de publication d'ASP.NET 5 RC1 dans le tableau, mais je n'ai pas encore inclus ASP.NET Core 1.0 et les autres versions principales, car je ne trouvais pas les dates de publication exactes. Pour en savoir plus sur les dates de parution d'ASP.NET Core, cliquez ici: Quand la version d'ASP.NET Core 1.0 (ASP.NET 5 / vNext) est-elle planifiée?





c# database ms-access