DotNet Almost Embedded MySQL Server

mysql logo

Napisanie 01/03/2013 przez Dawid Cieszyński

Stworzyliśmy prosty wrapper do uruchamiania lokalnego serwera MySQL. Dzięku temu aplikacje mogą korzystać z zalet silnika MySQL a jednocześnie nie jest wymagana skomplikowana instalacja u klienta.

Biblioteka pobiera przenośny (portable) serwer MySQL korzystając z projektu  Uniform Server Project, szuka pierwszego wolnego portu, konfiguruje i uruchamia serwer. Dodatkowo posiada metody do wczytania zrzutu bazy (mysql dump) oraz tworzenia/usuwania baz i wykonywania zapytań. Jedyne co jest potrzebne to podanie ścieżki do folderu gdzie serwer może trzymać dane. Biblioteka korzysta z MySql.Data i DotNetZip.

Przykład użycia:

class Program
    {
        static void Main(string[] args)
        {
            var assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
            var assemblyDirectory = Path.GetDirectoryName(assemblyLocation);
            if (assemblyDirectory == null)
            {
                Console.WriteLine("Cannot get assembly directory path");
                return;
            }
            var serverPath = Path.Combine(assemblyDirectory, "mysql");

            var mysqlServer = new MySqlServer(serverPath);
            mysqlServer.Start();
            Console.WriteLine("MySQL server started on port {0}", mysqlServer.GetPort());

            const string dbName = "simpletest1";
            mysqlServer.CreateDatabase(dbName);
            Console.WriteLine("Database {0} created", dbName);

            Console.WriteLine("Press any key to stop server\n");
            Console.ReadKey();
            mysqlServer.DropDatabase(dbName);
            Console.WriteLine("Database {0} dropped", dbName);

            mysqlServer.Stop();
            Console.WriteLine("MySQL server stopped");

            Console.WriteLine("Press any key to exit\n");
            Console.ReadKey();
        }
    }

Bibliotekę można pobrać na CodePlex: DotNet Almost Embedded MySQL Server.