{"id":217,"date":"2015-01-06T10:48:40","date_gmt":"2015-01-06T09:48:40","guid":{"rendered":"http:\/\/lalloue.fr\/blog\/?p=217"},"modified":"2015-01-06T10:55:15","modified_gmt":"2015-01-06T09:55:15","slug":"ajouter-une-base-sqlite-a-une-application-universelle","status":"publish","type":"post","link":"http:\/\/lalloue.fr\/blog\/ajouter-une-base-sqlite-a-une-application-universelle\/","title":{"rendered":"Ajouter une base SQLite \u00e0 une application Windows universelle"},"content":{"rendered":"<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/sqlight.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-218 \" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/sqlight-300x142.jpg\" alt=\"sqlight\" width=\"218\" height=\"102\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/sqlight-300x142.jpg 300w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/sqlight.jpg 305w\" sizes=\"(max-width: 218px) 100vw, 218px\" \/><\/a><\/p>\n<p>Cela fait maintenant un an que Microsoft a sorti les applications universelles pour Windows et Windows Phone, et ce type d&#8217;application commence \u00e0 se d\u00e9mocratiser dans l&#8217;univers Windows.<\/p>\n<p>Mais ce n&#8217;est pas toujours facile d&#8217;utiliser des services communs aux 2 types de projets de l&#8217;application universelle : Windows 8.1 et Windows Phone 8.1.<\/p>\n<p>C&#8217;est entre autre le cas de SQLite qui poss\u00e8de quelques particularit\u00e9s, mais rien n&#8217;est infaisable :<\/p>\n<p><!--more--><\/p>\n<h3>L&#8217;application universelle<\/h3>\n<p>Si vous lisez cet article j&#8217;imagine que vous connaissez d\u00e9j\u00e0 les applications universelle, je ne reviendrai donc pas en d\u00e9tails sur le sujet.<\/p>\n<p>Mais pour rappel, si vous avez cr\u00e9\u00e9 une application de type &#8220;universal app&#8221; dans Visual Studio vous devriez avoir un projet pr\u00e9sentant l&#8217;architecture suivante\u00a0:<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/universalapp.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-219 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/universalapp.png\" alt=\"universalapp\" width=\"439\" height=\"479\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/universalapp.png 439w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/universalapp-275x300.png 275w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/a><\/p>\n<p>On se retrouve donc avec 1 partie\u00a0distincte par plateforme et une partie commune (shared).<\/p>\n<h3>Installer SQLite<\/h3>\n<p>Malheureusement il n&#8217;est pas possible d&#8217;installer SQLite comme r\u00e9f\u00e9rence sur la partie commune (\u00e7a serait trop facile).<\/p>\n<p>Et les projets Windows 8.1 et Windows phone 8.1 ne sont pas compatibles sur ce point, il va donc falloir ajouter une r\u00e9f\u00e9rence diff\u00e9rente \u00e0 SQLite pour chaque projet. La seule solution pour faire \u00e7a est d&#8217;installer le SDK de SQLite \u00e0 Visual Studio pour Windows puis celui pour Windows Phone.<\/p>\n<p>Donc dans un premier temps, je vous conseille de mettre \u00e0 jour votre Visual Studio (<a href=\"http:\/\/www.visualstudio.com\/fr-fr\/downloads\/download-visual-studio-vs#d-visual-studio-2013-update\">Visual Studio 2013 Update 4<\/a>).<\/p>\n<p>Puis ensuite, r\u00e9cup\u00e9rez les packages de SQLite. Ces packages sont des packages VSIX build\u00e9s par l&#8217;\u00e9quipe de d\u00e9veloppement de SQlite :<\/p>\n<ul>\n<li><a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/1d04f82f-2fe9-4727-a2f9-a2db127ddc9a\/view\/\">SQLite pour Windows Runtime (Windows 8.1)<\/a><\/li>\n<li><a href=\"https:\/\/visualstudiogallery.msdn.microsoft.com\/5d97faf6-39e3-4048-a0bc-adde2af75d1b\">SQLite pour Windows phone 8.1<\/a><\/li>\n<\/ul>\n<p>Une fois ces fichiers t\u00e9l\u00e9charg\u00e9s, les ex\u00e9cuter et lancer l&#8217;installation :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/installSQLite.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-220 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/installSQLite.png\" alt=\"installSQLite\" width=\"219\" height=\"176\" \/><\/a><\/p>\n<p>Pour v\u00e9rifier que tout est correctement install\u00e9, dans Visual Studio, ouvrir le menu &#8220;Tools &gt; Extensions and Updates&#8221; et v\u00e9rifier que les SDKs install\u00e9s figurent bien dans la liste des extensions :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/SQLiteinstalled.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-221 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/SQLiteinstalled.png\" alt=\"SQLiteinstalled\" width=\"454\" height=\"264\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/SQLiteinstalled.png 454w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/SQLiteinstalled-300x174.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<h3>Ajouter SQLite \u00e0 votre projet<\/h3>\n<p>Vous \u00eates maintenant pr\u00eat \u00e0 int\u00e9grer SQLite \u00e0 votre application universelle.<\/p>\n<h5>Windows 8.1<\/h5>\n<p>Faites un clic droit sur &#8220;references&#8221; de votre projet Windows 8.1, puis s\u00e9lectionnez\u00a0&#8220;Add references&#8221; :<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-222 size-medium\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferences-300x266.png\" alt=\"addreferences\" width=\"300\" height=\"266\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferences-300x266.png 300w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferences.png 373w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Puis ajoutez la r\u00e9f\u00e9rence &#8220;SQlite for Windows Runtime (Windows 8.1)&#8221; :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferenceWindows-8.1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-223 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferenceWindows-8.1.png\" alt=\"addreferenceWindows 8.1\" width=\"454\" height=\"200\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferenceWindows-8.1.png 454w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferenceWindows-8.1-300x132.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<h5>Windows Phone 8.1<\/h5>\n<p>Dans un deuxi\u00e8me temps, on va faire la m\u00eame manipulation pour la partie Windows Phone : clic droit sur &#8220;references&#8221; du projet Windows Phone 8.1 :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/clicreferences.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-224\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/clicreferences.png\" alt=\"clicreferences\" width=\"258\" height=\"239\" \/><\/a><\/p>\n<p>Puis ajouter la r\u00e9f\u00e9rence &#8220;SQLite for Windows Runtime (Windows Phone 8.1)&#8221; :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferencesWindows-Phone8.1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-225 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferencesWindows-Phone8.1.png\" alt=\"addreferencesWindows Phone8.1\" width=\"454\" height=\"200\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferencesWindows-Phone8.1.png 454w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/addreferencesWindows-Phone8.1-300x132.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Une fois que ces 2 manipulations sont finies vous pouvez v\u00e9rifier que les r\u00e9f\u00e9rences ont bien \u00e9t\u00e9 ajout\u00e9es \u00e0 vos 2 projets :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/verifyreferencs.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-226 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/verifyreferencs.png\" alt=\"verifyreferencs\" width=\"261\" height=\"310\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/verifyreferencs.png 261w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/verifyreferencs-253x300.png 253w\" sizes=\"(max-width: 261px) 100vw, 261px\" \/><\/a><\/p>\n<h3>Warnings<\/h3>\n<p>C&#8217;est bien beau d&#8217;avoir fait tout \u00e7a, mais les r\u00e9f\u00e9rences indiquent un &#8220;warning&#8221;, c&#8217;est que \u00e7a doit pas \u00eatre si bien int\u00e9gr\u00e9 que \u00e7a !<\/p>\n<p>Et bien oui et non.<\/p>\n<p>En effet si vous essayez de lancer un build, vous allez avoir des erreurs de ce type :\u00a0\u201c<em>The processor architecture of the project being built \u201cAny CPU\u201d is not supported by the referenced SDK \u201cSQLite.WinRT81, Version=3.8.7.4\u2033.<\/em><\/p>\n<p>C&#8217;est pas grave ne vous en faites pas. Je ne vais pas rentrer dans les d\u00e9tails du probl\u00e8me mais en gros SQLite ne peut pas \u00eatre compil\u00e9 pour n&#8217;importe quel type de plateforme (Any CPU).<\/p>\n<p>La solution est donc d&#8217;indiquer dans le &#8220;Configuration Manager&#8221; que la plateforme par d\u00e9faut est x86 pour les 2 projets, en &#8220;debug&#8221; et pour les &#8220;releases&#8221; \u00e9galement. Par contre il ne faut surtout pas mettre x64 par d\u00e9faut, car \u00e7a emp\u00eacherait la vue &#8220;Designer&#8221; de fonctionner dans votre Visual Studio (ce qui est moins pratique).<\/p>\n<p>Et il est o\u00f9 ton &#8220;Configuration Manager&#8221; ? Et bien justement il est ici, en cliquant sur le menu d\u00e9roulant de &#8220;Debug&#8221; :<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/configurationManager.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-227 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/configurationManager.png\" alt=\"configurationManager\" width=\"454\" height=\"375\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/configurationManager.png 454w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/configurationManager-300x248.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>Une fois la fen\u00eatre ouverte, modifier toutes les plateformes par &#8220;x86&#8221;.<\/p>\n<p>Et ne vous inqui\u00e9tez pas, ce n&#8217;est pas parce que l&#8217;on d\u00e9finie x86 pour faire fonctionner notre projet dans Visual Studio que \u00e7a ne fonctionnera pas sur les autres plateformes. Quand vous publierez votre application via le menu &#8220;Store &gt; Create App package&#8221;, les versions x86, x64 et arm seront automatiquement cr\u00e9\u00e9es aussi.<\/p>\n<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/generateApp.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-228 size-full\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/generateApp.png\" alt=\"generateApp\" width=\"454\" height=\"368\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/generateApp.png 454w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2015\/01\/generateApp-300x243.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>Et voil\u00e0, SQLite est correctement int\u00e9gr\u00e9 \u00e0 votre application Universelle.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9f\u00e9rence :<\/strong>\u00a0cet article a \u00e9t\u00e9 inspir\u00e9\/traduit\/mis \u00e0 jour depuis l&#8217;article de\u00a0<a href=\"http:\/\/blog.tpcware.com\/2014\/04\/universal-app-with-sqlite-part-1\/\">Nicol\u00f2 Carandini\u00a0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cela fait maintenant un an que Microsoft a sorti les applications universelles pour Windows et Windows Phone, et ce type d&#8217;application commence \u00e0 se d\u00e9mocratiser dans l&#8217;univers Windows. Mais ce n&#8217;est pas toujours facile d&#8217;utiliser des services communs aux 2 types de projets de l&#8217;application universelle : Windows 8.1 et Windows Phone 8.1. C&#8217;est entre &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/lalloue.fr\/blog\/ajouter-une-base-sqlite-a-une-application-universelle\/\" class=\"more-link\">Continuer la lecture <span class=\"screen-reader-text\"> \u00ab\u00a0Ajouter une base SQLite \u00e0 une application Windows universelle\u00a0\u00bb<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13,27,5,4],"tags":[28,6,7,8],"_links":{"self":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts\/217"}],"collection":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":11,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":239,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions\/239"}],"wp:attachment":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}