热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在WindowsPhone中使用现有的Sqlite

本博文编写环境VS2010sp1WP7.1SDK之前在WindowsPhone可以使用Sqlite数据库,网上的例子有很多,一般的需求就是在程序部署之后

本博文编写环境 VS2010 sp1+WP7.1SDK

之前在Windows Phone可以使用Sqlite数据库,网上的例子有很多,一般的需求就是在程序部署之后,程序运行期间创建的数据库,通过Sqlite Clientfor Windows Phone 7可以实现。具体博文请参阅在Windows Phone上使用SQLite,并获取和编辑模拟器中的数据库文件

上面的使用的数据库,都是程序运行时创建的,可是如何才能使用我们自己有的数据库呢。因为我们操作的数据库是位于隔离存储空间里的,如果把数据库直接放在工程目录下是不可行的。查询各种资料可以把原有的数据库作为资源放在程序的目录下。当程序第一次运行的时候把数据库资源通过二进制流放在程序的隔离空间中,之后的操作就是对数据库的使用了。

可是,把数据库拷入隔离空间这一步也很容易完成。可是接下来使用Sqlite Clientfor Windows Phone 7 发现对数据库操作错误。。不知道为啥。于是考虑使用其他的第三方类库。后来通过各种搜索,各种尝试,终于找到了Vici CoolStorage 具体操作如下。

第一步我使用SqliteManager(火狐浏览器的插件,关于操作sqlite操作的工具有好多的奥)创建一个名字为test.sqlite的数据库。接下来创建一个表格myuser 加入几列内容如下

name

age

"张三"

"20"

"李四"

"21"

"王五"

"22"

"赵六"

"23"

"刘七"

"25"

 

第二步 把该数据库复制到VS的工程目录下如下,将BuildAction 改为Content 切记这一点。

第三步 就是引入操作数据的DLL了。如果你的VS中已经安装了Nuget,点击Mange Nuget Packages。然后搜索Vici CoolStorage

双击Vici CoolStorage,就会开始下载这个东西了

下载完成之后,发现工程的引用目录下多两个引用。做了这么多就是为了加入这两个dll  。。Vici.CoolStorage.WP7.dll以及Vici.Core.WP7.dll。如果你木有用过nuget,可以在我给的这个地址下载需要的DLL。,手动加入即可。地址 。

下面开始写代码了。

将数据库复制到隔离存储的代码如下封装好了方法

///

///通过!iStorage.FileExists(fn)保证 程序第一次///运行的时候才会将数据库复制///到隔离存储空间中&#xff0c;///fn为复制的数据库路径及名称/// private void move(string fn){StreamResourceInfo sr &#61; Application.GetResourceStream(new Uri(fn, UriKind.Relative));IsolatedStorageFile iStorage &#61; IsolatedStorageFile.GetUserStoreForApplication();if (!iStorage.FileExists(fn)){using (var outputStream &#61; iStorage.OpenFile(fn, FileMode.CreateNew)){byte[] buffer &#61; new byte[10000];for (; ; ){int read &#61; sr.Stream.Read(buffer, 0, buffer.Length);if (read <&#61; 0)break;outputStream.Write(buffer, 0, read);}}}}

  

接下来的代码是使用隔离存储空间的sqlite数据库。插入记录&#xff0c;查询记录

private void loaddata_Click(object sender, RoutedEventArgs e)
{
string fn &#61; "test.sqlite";
move(fn);
CSConfig.SetDB(fn);//这句话很重要。设置使用的数据库
int i &#61; CSDatabase.ExecuteNonQuery("insert into myuser (name,age) values (&#39;坤坤&#39;,24)");//里面是SQl语句
CSGenericRecordList cslis &#61; CSDatabase.RunQuery("select * from myuser");//可以理解为返回一个表格
string names&#61;"";
foreach (CSGenericRecord cs in cslis)
{
names &#43;&#61; "名字:" &#43; cs["name"].ToString() &#43; " 年龄&#xff1a;" &#43; cs["age"].ToString() &#43; "\n";
}
MessageBox.Show(names);
}

在以上代码里 实现了连接数据库CSConfig.SetDB(fn); 插入一条记录 &#xff0c;查询记录。前5条是之前数据库中的数据。

 看运行效果 &#xff08;真机测试通过&#xff09;

总结&#xff1a;

以上操作关键内容主要分为两步

使用程序将数据库复制到隔离存储&#xff08;第一次使用的时候才会复制&#xff0c;判断是否存在&#xff0c;如果存在就不再复制了。&#xff09;

其次就是对Vici CoolStorage 使用了请参考官方地址。这个东西真的很强大&#xff0c;能够操作的数据库不只是Sqlite 也不限于WP。各种数据库&#xff0c;各种平台。

 

转载请注明出处

欢迎关注我的新浪微博 http://weibo.com/u/1821556025

转:https://www.cnblogs.com/dubaokun/archive/2013/01/09/2852469.html



推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了如何在dotnet桌面(Windows)应用程序中添加图标。作者提到可以使用dotnet命令行工具与resource.rc文件一起使用来为标准.NET核心应用程序添加图标。作者还介绍了在创建控制台应用程序时如何编辑projeto1.csproj文件来添加图标。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
author-avatar
mobiledu2502890213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有