{"id":55000074,"date":"2017-02-01T00:00:00","date_gmt":"2020-03-27T19:24:49","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=74"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"SQLite_als_Backend","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/SQLite_als_Backend\/","title":{"rendered":"SQLite als Backend"},"content":{"rendered":"<p><b>Der SQL Server kommt als m&auml;chtiges Installationspaket, und selbst die schlanke Variante LocalDb muss erst einmal installiert werden, bevor die Anwendung auf dem Zielsystem auf Daten zugreifen kann. Schlank und ohne eigene Installation &#8211; das w&auml;ren gute Eigenschaften f&uuml;r ein Datenbanksystem f&uuml;r den Einsatz in einfachen Desktop-Anwendungen. Die L&ouml;sung lautet SQLite: Diese Programmbibliothek k&ouml;nnen Sie einfach zum Projekt hinzuf&uuml;gen und es mit der Anwendung auf dem Zielrechner installieren. Und das Beste: SQLite unterst&uuml;tzt sogar das Entity Framework.<\/b><\/p>\n<h2>SQLite &#8211; wozu<\/h2>\n<p>Unser prim&auml;rer Anlass, einmal nach Alternativen zum SQL Server oder zu LocalDb zu suchen, sind die Beispielprojekte zu diesem Magazin. Wenn diese eine Datenbank enthalten, sind immer der eine oder andere Schritt n&ouml;tig, bevor Sie die Beispiele auf Ihrem Rechner ausprobieren k&ouml;nnen. Und das ist selbst der Fall, wenn bereits eines der Microsoft-Datenbanksysteme auf ihrem Rechner installiert ist. Welche Voraussetzungen sollte das gesuchte Datenbanksystem also haben Am wichtigsten ist nat&uuml;rlich, dass wir damit weiterhin die Techniken vorstellen k&ouml;nnen, die Sie auch bei Verwendung von Microsoft-Datenbanken nutzen &#8211; also Beispielsweise der Einsatz des Entity Frameworks als Schnittstelle zwischen Anwendung und Datenbank. Der zweite Punkt ist, dass eine m&ouml;glichst einfache Installation der Programmdateien des Datenbanksystems m&ouml;glich ist oder am besten gar keine. Stattdessen sollte das Datenbanksystem am besten direkt im Projektordner an den Zielrechner &uuml;bergeben werden und bereits fertig konfiguriert sein.<\/p>\n<p>Wir h&auml;tten uns nat&uuml;rlich auch mit einer Access-Datenbank als Backend zufrieden gegeben, denn Access d&uuml;rfte bei der Zielgruppe dieses Magazins auf dem Rechner installiert sein. Allerdings erf&uuml;llt eine Access-Datei gleich zwei Punkte nicht: Erstens ist f&uuml;r die Verwendung immer noch eine Access-Installation auf dem Zielrechner n&ouml;tig. Dies ist zwar aufgrund der Runtime-Version, die kostenlos weitergegeben werden darf, m&ouml;glich, aber besser ist nat&uuml;rlich ein Datenbanksystem, das komplett ohne Installation auskommt. Zweitens k&ouml;nnen wir zwar per ADO.NET auf Access-Datenbanken zugreifen, aber sp&auml;testens, wenn das Entity Framework zum Einsatz kommen soll (und das Entity Framework wird uns in diesem Magazin noch eine Weile begleiten), wird es eng &#8211; es gibt n&auml;mlich keine Implementierung, die den Zugriff auf die Tabellen einer Access-Datenbank erlaubt. Dar&uuml;ber sind wir dann auf SQLite gesto&szlig;en. Diese Datenbank kommt im Wesentlichen in Form einer Programmbibliothek, die au&szlig;erdem auch noch nur wenige hundert Kilobyte gro&szlig; ist. Und es hat eine weitere Gemeinsamkeit mit Access: Die eigentlichen Datenbanken kommen in Form einer einzigen Datei, in diesem Fall mit der Dateiendung <b>.db<\/b>.<\/p>\n<p>SQLite ist nicht von ungef&auml;hr so kompakt: In der Regel wird es etwa in Apps f&uuml;r Mobiltelefone eingesetzt. Die Kompaktheit hat nat&uuml;rlich auch ihren Preis: SQLite enth&auml;lt l&auml;ngst nicht alle Funktionen, die ein &#8220;gro&szlig;es&#8221; Datenbanksystem wie etwa SQL Server bietet. F&uuml;r den Einsatz in unseren Beispieldatenbanken reichen die Funktionen aber allemal aus. In den folgenden Abschnitten erfahren Sie verschiedene Dinge &uuml;ber SQLite:<\/p>\n<ul>\n<li>mit welchem Tool Sie SQLite-Datenbanken erstellen und bearbeiten k&ouml;nnen,<\/li>\n<li>wie Sie SQL Server-Datenbanken nach SQLite migrieren,<\/li>\n<li>wie Sie SQLite in .NET-Projekten einsetzen und ein Entity Data Model auf Basis einer SQLite-Datenbank erstellen und<\/li>\n<li>wie Sie eine Anwendung mit SQLite-Datenbank weitergeben k&ouml;nnen.<\/li>\n<\/ul>\n<h2>SQLite-Tools<\/h2>\n<p>Bevor wir &uuml;berhaupt mit unserer Anwendung auf eine SQLite-Datenbank zugreifen k&ouml;nnen, sollten wir uns eine solche erstellen. Dazu gibt es verschiedene Tools. Wir haben den <b>DB Browser for SQLite <\/b>verwendet, den Sie unter folgendem Link finden:<\/p>\n<pre>http:\/\/sqlitebrowser.org\/<\/pre>\n<p>Hier laden Sie einfach den Download unter dem Link <b>Windows.exe <\/b>in der 32bit- oder 64bit-Version herunter und installieren die Anwendung.<\/p>\n<p>Nach der Installation k&ouml;nnen Sie das Tool direkt starten. Hier bietet sich auch direkt die Schaltfl&auml;che <b>Neue Datenbank <\/b>zum Erstellen einer neuen Datenbank an. Wir wollen aber nicht tiefer in den Umgang mit diesem Tool einsteigen, sondern dieses nur kurz vorstellen &#8211; also Notl&ouml;sung, wenn Sie einmal in den Entwurf einer Datenbank eingreifen m&uuml;ssen. Wir wollen aber dennoch kurz einmal einen Blick in eine echte SQLite-Datenbank werfen. Eine solche findet sich auch recht schnell, und zwar unter dem folgenden Link:<\/p>\n<pre>http:\/\/www.sqlitetutorial.net\/sqlite-sample-database\/<\/pre>\n<p>Nach dem Download finden Sie eine Datei namens <b>chinook.db <\/b>im Zielverzeichnis. &Ouml;ffnen Sie diese nun mit dem Tool <b>DB Browser for SQLite<\/b>, f&uuml;llt sich dieses recht schnell mit bekannt aussehenden Elementen wie Tabellen, Feldern und Felddatentypen (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_74_002.png\" alt=\"Fenster des SQLite-Tools DB Browser for SQLite\" width=\"649,559\" height=\"412,0688\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Fenster des SQLite-Tools DB Browser for SQLite<\/span><\/b><\/p>\n<h2>Vom SQL Server zu SQLite <\/h2>\n<p>Sie k&ouml;nnen diese Tabelle als Ausgangspunkt f&uuml;r eigene Experimente nutzen, aber wir wollen gern mit der bereits in weiteren Beispielen verwendeten Datenbank <b>Bestellverwaltung <\/b>weiter arbeiten. Wie aber machen wir aus einer SQL Server-Datenbank eine SQLite-Datenbank Auch hierf&uuml;r gibt es ein Tool, das Sie unter diesem Link finden:<\/p>\n<pre>https:\/\/www.codeproject.com\/articles\/26932\/convert-sql-server-db-to-sqlite-db<\/pre>\n<p>Hier m&uuml;ssen Sie sich allerdings anmelden, um dann die gew&uuml;nschte Version, hier wohl die Binary, herunterzuladen. Sie erhalten hier eine <b>.zip<\/b>-Datei mit einem Verzeichnis namens <b>SqlConverter_v1_20<\/b>, das Sie einfach auf Ihre Festplatte kopieren. Starten Sie die Anwendung, die als <b>Converter.exe <\/b>in diesem Verzeichnis steckt, erscheint das Fenster aus Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_74_001.png\" alt=\"Tool zum Konvertieren von SQL Server-Datenbanken nach SQLite\" width=\"599,593\" height=\"237,8915\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tool zum Konvertieren von SQL Server-Datenbanken nach SQLite<\/span><\/b><\/p>\n<p>Geben Sie hier den Servernamen des SQL Servers ein und w&auml;hlen Sie dann die Quelldatenbank aus. Legen Sie au&szlig;erdem den Namen der zu erstellenden <b>.db<\/b>-Datei fest, zum Beispiel <b>Bestellverwaltung_SQLite.db<\/b>. Ein Mausklick auf die Schaltfl&auml;che <b>Start the conversion <\/b>startet den Vorgang, bei dem Sie zun&auml;chst mit dem Dialog aus Bild 3 die zu konvertierenden Tabellen festlegen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_74_003.png\" alt=\"Auswahl der zu konvertierenden Tabellen\" width=\"424,7115\" height=\"399,3265\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Auswahl der zu konvertierenden Tabellen<\/span><\/b><\/p>\n<p>Danach d&uuml;rfte eine Datei namens <b>Bestellverwaltung_SQLite.db <\/b>im gew&auml;hlten Zielverzeichnis gelandet sein. &Ouml;ffnen Sie diese Datei nun mit dem <b>DB Browser for SQLite<\/b>, k&ouml;nnen Sie schnell pr&uuml;fen, ob alle Tabellen und Felder wie gew&uuml;nscht in der Zieldatenbank gelandet sind (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_01\/pic_74_004.png\" alt=\"Anzeige der konvertierten Datei im DB Browser for SQLite\" width=\"424,7115\" height=\"466,4567\"\/><\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000074\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000074?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000074\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"cbd3f36316\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der SQL Server kommt als m&auml;chtiges Installationspaket, und selbst die schlanke Variante LocalDb muss erst einmal installiert werden, bevor die Anwendung auf dem Zielsystem auf Daten zugreifen kann. Schlank und ohne eigene Installation &#8211; das w&auml;ren gute Eigenschaften f&uuml;r ein Datenbanksystem f&uuml;r den Einsatz in einfachen Desktop-Anwendungen. Die L&ouml;sung lautet SQLite: Diese Programmbibliothek k&ouml;nnen Sie einfach zum Projekt hinzuf&uuml;gen und es mit der Anwendung auf dem Zielrechner installieren. Und das Beste: SQLite unterst&uuml;tzt sogar das Entity Framework.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012017,662017,44000023,44000006],"tags":[],"yst_prominent_words":[],"class_list":["post-55000074","post","type-post","status-publish","format-standard","hentry","category-66012017","category-662017","category-PowerApps","category-SQL_Server_und_Co"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000074"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000074\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000074"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}