日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

多样化实现Windows Phone 7本地数据访问3——DB4O

發(fā)布時(shí)間:2023/12/31 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多样化实现Windows Phone 7本地数据访问3——DB4O 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

終于把這篇文章發(fā)出來(lái)了. 對(duì)于Windows Phone 7 Visit Local DataBase新采用DB4O和SiaqoDB方式來(lái)驗(yàn)證 本地?cái)?shù)據(jù)訪問(wèn). 其實(shí)這篇已經(jīng)在上周 完成一個(gè)大概草稿. 中間再CodePlex看到一個(gè)Dvp寫(xiě)的一段關(guān)于Perst數(shù)據(jù)庫(kù)使用心得 回過(guò)頭一看又覺(jué)得自己寫(xiě)的有些關(guān)于SiaqoDB細(xì)節(jié)上有失嚴(yán)謹(jǐn).?于是乎又不斷查看多方資料來(lái)反復(fù)利用實(shí)際編程的方式來(lái)驗(yàn)證. 可惜的是這方面資料基本沒(méi)有,對(duì)于某些想法只能動(dòng)手嘗試 ok let’s get start!……

關(guān)于Windows Phone 7 本地?cái)?shù)據(jù)庫(kù)訪問(wèn)的選擇 JackLin 已經(jīng)完整的總結(jié)了一篇文章淺談Windows Phone 7本地?cái)?shù)據(jù)庫(kù)的選擇. 而今天我的工作就是驗(yàn)證他在這文章中提出的DB4O和SiaqoDB兩種訪問(wèn)方式. 至于文中提到的EffiProz Database/Windows Phone DataBase/Sqlite for Windows Phone 7 三種方式已經(jīng)前兩篇完整驗(yàn)證. 可以參考.

對(duì)于這個(gè)DB40, 我也是很偶爾中看到. 起初對(duì)于這個(gè)純開(kāi)源的面向?qū)ο蟮臄?shù)據(jù)引擎 沒(méi)有太過(guò)重視. 關(guān)于WP7本地?cái)?shù)據(jù)訪問(wèn)我先測(cè)試SQlite和Effoproze . 但是使用完DB4O不得不說(shuō)它本身特點(diǎn)相比其他開(kāi)源數(shù)據(jù)庫(kù)非常突出:

A:在官方[DB4O WebSite]的宣傳語(yǔ)中就說(shuō)到We are Free. DB4O的完全靠的開(kāi)源社區(qū)的驅(qū)動(dòng)力量來(lái)進(jìn)行開(kāi)發(fā). 意味它是免費(fèi)的.

B:原生數(shù)據(jù)庫(kù): 為什么說(shuō)是原生.db4o 是 100% 原生的面向?qū)ο髷?shù)據(jù)庫(kù),直接使用編程語(yǔ)言來(lái)操作數(shù)據(jù)庫(kù)。程序員無(wú)需進(jìn)行?OR?映射來(lái)存儲(chǔ)對(duì)象,大大節(jié)省了程序員在存儲(chǔ)數(shù)據(jù)的開(kāi)發(fā)時(shí)間, 這讓我想到Rails框架中ORM映射和.NET從java翻版過(guò)來(lái)的Nhibernate. 想想我們以前做OO編程時(shí) 把一個(gè)面向?qū)ο蟮念?lèi)存儲(chǔ)到關(guān)系型數(shù)據(jù)庫(kù)中 總是難以避免走到這一步.

ORM層將數(shù)據(jù)庫(kù)表映射到類(lèi), 將表中記錄映射成一個(gè)實(shí)例對(duì)象. 將字段映射成對(duì)象的屬性.類(lèi)方法則對(duì)應(yīng)做的是表級(jí)別的操作, 實(shí)例方法則用于執(zhí)行對(duì)單條記錄的操作. 這樣直接對(duì)OO 操作的數(shù)據(jù)持久化操作 業(yè)界對(duì)Nhibernate性能上擔(dān)憂(yōu) 但DB4O 在性能上如何?

C:高性能: db4o 官方公布的基準(zhǔn)測(cè)試數(shù)據(jù),db4o 比采用 Hibernate/MySQL?方案在某些測(cè)試線路上速度高出 44 倍之多. 更多相關(guān)測(cè)試請(qǐng)參考官方[DB4O WebSite]文檔.

D:易簽入.使用 db4o 僅需引入 400 多 k 的?jar?文件或是?dll?文件,內(nèi)存消耗極小 無(wú)需管理 而且跨平臺(tái).

大概介紹DB40特點(diǎn) 下面快速進(jìn)度WP7開(kāi)發(fā)去體驗(yàn)一番.

在進(jìn)行DB40 For Windows pheon 7開(kāi)發(fā)前需要下載DB4O開(kāi)源組件:

下載地址.NEt 3.5版本:DB40 Download Link[DB4O 7.12 For .NEt 3.5]

下載完成后自動(dòng)安裝. 會(huì)在系統(tǒng)C盤(pán)符上生成一個(gè)目錄. ok let’s Create new WP7 Application For Test:

<2.1>添加引用

測(cè)試項(xiàng)目TestDB4OLocalDemo 創(chuàng)建完成后 需要添加引用, 找到DB4O默認(rèn)安裝目錄:

C:\Program Files\db4o\db4o-7.12\bin\net-3.5

下添加Db4objects.Db4o.DLLDb4objects.Db4o.Linq.DLL引用:

引用結(jié)果:

添加引用完成后后臺(tái)頁(yè)面引入:

  • //添加引用??? ?
  • using?Db4objects.Db4o;??? ?
  • using?Db4objects.Db4o.IO;??? ?
  • using?Db4objects.Db4o.Query;??? ?
  • using?Db4objects.Db4o.Linq;?
  • 為了達(dá)到演示目的 將先在WP7界面實(shí)現(xiàn)DB4O數(shù)據(jù)庫(kù)基本的CRUD操作, 這時(shí)我們需要一個(gè)操作實(shí)體對(duì)象Customer類(lèi) 定義如下:

  • ///?<summary>??? ?
  • ///?定義數(shù)據(jù)承載實(shí)體信息Customer??? ?
  • ///?Author:chenkai?Date:2010年9月24日10:25:38??? ?
  • ///?</summary>??? ?
  • public?class?Customer??? ?
  • {??? ?
  • public?int?Id?{?get;?set;?}??? ?
  • public?string?CustomerName?{?get;?set;?}??? ?
  • public?string?CustomerPhone?{?get;?set;?}?? ?
  • public?int?Age?{?get;?set;?}?? ?
  • public?DateTime?CreateDate?{?get;?set;?} ?
  • }?
  • WP7界面我們先初始化數(shù)據(jù),然后根據(jù)CustmerName屬性查詢(xún)數(shù)據(jù), 刪除操作則對(duì)應(yīng)CustomerID來(lái)刪除,演示界面:

    來(lái)看一下后臺(tái)文件關(guān)于DB4O數(shù)據(jù)庫(kù)初始化時(shí)插入數(shù)據(jù)具體操作,當(dāng)開(kāi)始第一次運(yùn)行時(shí) 提示一個(gè)異常信息:

    提示的意思是我們目前的.NET版本不對(duì).?注意目前DB4O數(shù)據(jù)在官方中下載文件對(duì)應(yīng).NEt兩個(gè)版本.2.0和3.5 這是7.12版本,所以在建立WP7時(shí)把默認(rèn)的.NET 4.0更改為3.5 , 如果當(dāng)修改WP7.NEt版本為對(duì)應(yīng)的版本后依然提出這個(gè)問(wèn)題.這個(gè)問(wèn)題困擾我好一陣終于在WeAsk-上找到類(lèi)似問(wèn)題 來(lái)看一下我打開(kāi)一個(gè)DB4O數(shù)據(jù)庫(kù)文件的操作代碼:

  • //打開(kāi)并自動(dòng)創(chuàng)建一個(gè)TESt.DB4O文件??? ?
  • string?dbfilepath?=?@"E:\DB4o\test.db4o";??? ?
  • IObjectContainer?getdb40?=?Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(),?dbfilepath);?
  • 這個(gè)問(wèn)題困擾我好一陣.后來(lái)在Weask上問(wèn)了Grouper 當(dāng)我們通過(guò)OpenFile自動(dòng)創(chuàng)建一個(gè)固定路徑上的DB4O文件,DB4O對(duì)于.NET版本的嵌入式開(kāi)發(fā)需要特殊的配置.Db4oEmbedded.NewConfiguration()實(shí)現(xiàn)的是?IEmbeddedConfiguration接口.IEmbeddedConfiguration接口包含了在嵌入式模式下具體配置的方法.所以在NewConfiguation()需要配置Config中適用的范圍即ConfigScope.

  • ///?<summary>??? ?
  • ///?Configuation?The?DB4O??? ?
  • ///?</summary>?? ?
  • public?static?IEmbeddedConfiguration?ConfigureReplication()?? ?
  • {??? ?
  • IEmbeddedConfiguration?db4oConfig?=?Db4oEmbedded.NewConfiguration();??? ?
  • db4oConfig.File.GenerateUUIDs?=?ConfigScope.Globally;??? ?
  • ?
  • db4oConfig.File.GenerateVersionNumbers?=?ConfigScope.Globally;?? ?
  • return?db4oConfig;//(IConfiguration)?? ?
  • }?
  • 問(wèn)題依然存在. 執(zhí)行到Db4oEmbedded.NewConfiguration()時(shí)依然會(huì)提示一個(gè)同樣的.NET版本異常. 這個(gè)問(wèn)題困擾我一個(gè)上午.看一下按鈕事件中完整代碼:當(dāng)初始化數(shù)據(jù)時(shí)通過(guò)后臺(tái)添加3條記錄并查詢(xún)DB4O中數(shù)據(jù)記錄數(shù)量是否為 3 判斷插入數(shù)據(jù)是否成功 代碼如下:

  • private?void?ReadlyDate_Click(object?sender,?RoutedEventArgs?e)? ?
  • {??? ?
  • //創(chuàng)建數(shù)據(jù)庫(kù)??? ?
  • try??? ?
  • {??? ?
  • ????????????string?dbfilepath?=?@"E:\DB4o\test.db4o";??? ?
  • ????????????string?getfilepath=@"testdb.db4o";??? ?
  • ?????????????//IObjectContainer?getdb40?=?Db4oEmbedded.OpenFile(MainPage.ConfigureReplication(),?getfilepath);?? ?
  • ???????????????//Db4oEmbedded.NewConfiguration?? ?
  • ???????????????IEmbeddedConfiguration?configuration?=?Db4oEmbedded.NewConfiguration();?? ?
  • ???????????????configuration.File.GenerateUUIDs=ConfigScope.Globally;?? ?
  • ?????????????????configuration.File.GenerateVersionNumbers=ConfigScope.Globally;?? ?
  • ?????????????????IObjectContainer?getdb40?=?Db4oEmbedded.OpenFile(configuration,?getfilepath);??? ?
  • ?????????????????List<Customer>?initialCustomerlist?=?new?List<Customer>?? ?
  • ?????????????{?? ?
  • ??????????????????new?Customer{?Id=1002,?CustomerName="chenkai",?CustomerPhone="052-854652",?Age=28,?CreateDate=DateTime.Now},?? ?
  • ???????????????????new?Customer{?Id=1003,?CustomerName="jackchen",?CustomerPhone="014-778546",? ?
  • ??????????????????new?Customer{?Id=1004,?CustomerName="markDinel",?CustomerPhone="062-634652",?Age=28,?CreateDate=DateTime.Now},?? ?
  • ??????????????};?? ?
  • ?
  • ???????????????//insert?to?DB4o? ?
  • ???????????????if?(initialCustomerlist.Count?>?0)?? ?
  • ?????????????{?? ?
  • ?????????????????this.listBox1.Items.Clear();?? ?
  • ?????????????????????foreach?(Customer?getcustomer?in?initialCustomerlist)? ?
  • ?????????????????????{?? ?
  • ????????????????????????//插入數(shù)據(jù)?? ?
  • ????????????????????????getdb40.Store(getcustomer);?? ?
  • ??????????????????????this.listBox1.Items.Add(getcustomer.CustomerName?+?"已存儲(chǔ)!");?? ?
  • ???????????????????}?? ?
  • ????????????????}?? ?
  • ?
  • ?????????????//cofrim?是否插入成功??查詢(xún)數(shù)據(jù)?? ?
  • ???????????????Customer?typecutomer?=?new?Customer();?? ?
  • ????????????????IObjectSet?getobjset?=?getdb40.QueryByExample(typecutomer);?? ?
  • ?
  • ?????????????if?(getobjset.Count?==?3)?? ?
  • ???????????????{?? ?
  • ??????????????MessageBox.Show("數(shù)據(jù)插入成功!");?? ?
  • ???????????????}?? ?
  • ?????????????else? ?
  • ???????????????{?? ?
  • ??????????????????MessageBox.Show("數(shù)據(jù)插入失敗!");?? ?
  • ????????????????}?? ?
  • ??? ?
  • ???????????????//Close?操作?? ?
  • ???????????????getdb40.Close();? ?
  • ???????????}? ?
  • ????????????catch?(Exception?se)?? ?
  • ????????{?? ?
  • ???????????????MessageBox.Show("初始化DB4O數(shù)據(jù)時(shí)出現(xiàn)異常:"?+?se.Message);? ?
  • ????????????}? ?
  • ???????}?
  • 目前遇到問(wèn)題是WP7 引用DB4O后在Windows Phone 7 Application中提示一個(gè).NET FrameWork版本異常?始終無(wú)法解決.

    經(jīng)過(guò)一番很費(fèi)力的查找在官方開(kāi)發(fā)者論壇同樣有人遇到這樣的問(wèn)題.?.NEt FrameWork Version Problem???但是他是在進(jìn)行AND移動(dòng)程序和Desklop桌面程序數(shù)據(jù)進(jìn)行同步時(shí).

    在DB4O官方對(duì)開(kāi)發(fā)者對(duì)應(yīng)下載頁(yè)面:?[Developer Download Link]?對(duì)DB4O存在多個(gè)下載版本:

    可下載適用DB4O多個(gè)版本[只看.NEt支持]:

    DB40 For .NET 2.0/3.5 Version:7.12.156

    DB40 For .NET 2.0/3.5 Version:7.4.155

    DB40 For .NET 2.0/3.5/4.0 Version:8.0.156

    大概查看一下Version 8.0之間 的Realse Note: 查看最新的Release Notes 8.0.156:

    COR-1339?- Check db4o against latest Silverlight SDK

    等于說(shuō)在最新的支持.NEt 4.0的DB4O 8.0中對(duì)Silverlight支持. 我們?cè)賮?lái)查看相關(guān)個(gè)DB40關(guān)于Silverlight和Windows Phone支持詳細(xì)文檔:

    [db4o - Silverlight based RIA datastore]

    [db4o - Windows Phone database]

    DB4O對(duì)Windows Phone支持中明確提到:

    .NET 4.0 support and Silverlight version

    db4o now supports .NET 4.0 and has been ported to Silverlight! In order to get it you just need to download the .NET installer.

    DB4O現(xiàn)在已經(jīng)支持.NEt 4.0版本 這樣一來(lái)基本目前所有的.NEt版本DB4O都已經(jīng)支持. 不過(guò)對(duì)Silverlight最新版本支持正在開(kāi)發(fā). 目前DB4O對(duì)Silverlight支持版本為Silverlight 3. DB4O可以免費(fèi)使用在任何的Windows Phone 設(shè)備程序中. 那應(yīng)該我們對(duì)應(yīng)支持版本有問(wèn)題 下載最新的DB4O8.0 版本[需要注冊(cè)]:

    [DB40 Last Version 8.0 Download link db4o for .NET 4.0, version 8.0.160.14822 ZIP]

    在DB4O官方注冊(cè)用戶(hù)有一個(gè)很怪現(xiàn)象 只要你的機(jī)器裝了.NEt 4.0 在提交用戶(hù)信息后始終會(huì)提示一個(gè)運(yùn)行時(shí)異常 :

    導(dǎo)致無(wú)法 注冊(cè) 后來(lái)我通過(guò)一個(gè)同事在java開(kāi)發(fā)環(huán)境注冊(cè)成功.

    下載完成后 打開(kāi)Bin目錄可以看到其中已經(jīng)集成對(duì)Silverlight 3支持:

    重新建立一個(gè)WP7 Application 選擇的.NET版本為.NET 4.0 引用DB4O版本為8.0 其他均不做修改 運(yùn)行提示如下:

    調(diào)用Db4oEmbedded.NewConfiguration()時(shí) 無(wú)法找到NewConfiguartion()方法 或提示嘗試訪問(wèn)該方法調(diào)用失敗.

    天啊 DB4O真是如此的折磨人!.我分別用了不同.NEt版本來(lái)測(cè)試同一個(gè)DB4O版本 結(jié)果還是無(wú)功而返. 我順便產(chǎn)看官方給出演示Demo實(shí)例. 可惜沒(méi)有關(guān)于Windows Phone 7的相關(guān)Demo. 從剛開(kāi)始提示.NET版本問(wèn)題到現(xiàn)在NewConfiguation()方法無(wú)法訪問(wèn). 希望碰到相關(guān)問(wèn)題或是對(duì)DB4O基于WP7本地?cái)?shù)據(jù)訪問(wèn)已經(jīng)成功案例 能夠共享出來(lái).

    很遺憾 我利用假期又做了其他版本的嘗試 結(jié)果還是一樣. 關(guān)于DB4O在Windows Phone 7上的本地?cái)?shù)據(jù)訪問(wèn) 測(cè)試失敗.

    DB4O在WP7我測(cè)試訪問(wèn)本地?cái)?shù)據(jù)沒(méi)有成功.官方明確提示是對(duì)Windows mobile 6.0/6.5都是支持的. 當(dāng)然在DB4O相對(duì)其他開(kāi)源第三方的數(shù)據(jù) 很有特點(diǎn). 現(xiàn)在已經(jīng)有很多企業(yè)把DB4O作為開(kāi)發(fā)的底層數(shù)據(jù)交互對(duì)象來(lái)進(jìn)行考慮. 關(guān)于這個(gè)WP7問(wèn)題 我們一直無(wú)法解決. 當(dāng)然不是說(shuō)沒(méi)有替代方法. 可以在WP7程序建立一個(gè)數(shù)據(jù)服務(wù)層用.NET類(lèi)庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)DB4O訪問(wèn) 然后留用WCF服務(wù)的方式對(duì)外發(fā)布訪問(wèn)接口 在由WP7引用服務(wù)即可訪問(wèn). 如果哪位有更好的方法方式來(lái)解決這個(gè)問(wèn)題. 請(qǐng)?jiān)诹粞灾刑岢觥?/p>

    參考資料:

    DB4O 7.0 中文參考指南[Java版本文檔 有教程] 對(duì)照翻譯版

    WeAsk-DB4O use in Windows Phone

    Silverlighti and DB4O UserFrom

    DataBase in WindowsPhone


    本文轉(zhuǎn)自chenkaiunion 51CTO博客,原文鏈接:http://blog.51cto.com/chenkai/764484


    總結(jié)

    以上是生活随笔為你收集整理的多样化实现Windows Phone 7本地数据访问3——DB4O的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产亚洲成av人片在线观看桃 | 又黄又高潮的视频 | 伊人射 | 中文字幕大全 | 亚洲视频不卡 | 韩国美女av | 亚洲精品高清在线观看 | 久久密 | 成人性视频网 | 国产区在线 | 亚洲欧美日本在线观看 | 97福利| 久久久91视频 | 久久高清无码视频 | 熟妇大屁股一区二区三区视频 | 国产乱论 | 久久久精品欧美 | 亚洲 高清 成人 动漫 | 91在线视频国产 | 护士人妻hd中文字幕 | 狠狠插综合 | 另类小说色综合 | 538国产视频 | 在线永久看片免费的视频 | 天天干天天舔 | 美女福利视频在线观看 | 亚洲视频国产视频 | 久久最新网址 | 91免费片| 日本午夜一区 | 国产精品1000| 色网站免费在线观看 | 亚洲黄色精品视频 | 99ri国产| 欧洲亚洲成人 | 一区二区三区欧美 | 国产成人99久久亚洲综合精品 | 激情婷婷综合网 | 悠悠色影院 | 黑人性高潮 | 成人性生交大免费看 | 亚洲精品乱码久久久久久国产主播 | 免费av导航 | 91九色在线视频 | 色人阁婷婷| 日韩特黄| 国产在线精品观看 | 东凛在线观看 | 啦啦啦av| 日本视频免费看 | 日韩视频播放 | 久久久久99精品成人片 | 夜夜爱夜夜操 | 天天摸天天看 | 婷婷午夜激情 | 国产成人97精品免费看片 | 九色91popny蝌蚪 | 午夜黄色剧场 | 少妇4p | 欧美午夜一区二区三区 | 色多多在线观看 | 中文在线8资源库 | 日韩精品tv | 国产日韩中文 | 亚色av| 日本乱轮视频 | 日韩精品亚洲精品 | 久久久久人妻一区 | 新国产视频 | 亚洲精品一级片 | 蜜臀尤物一区二区三区直播 | 婷婷伊人五月 | 国产二区视频在线观看 | 偷操| 99这里有精品 | 日韩美女视频网站 | 欧美精品在线播放 | 亚洲精品小视频在线观看 | 国产手机在线观看 | 深夜福利免费在线观看 | 亚洲一区二区国产 | 精品国产av一区二区 | 原创av | 波多野结衣免费观看视频 | 91视频播放 | 午夜天堂 | 国产精品久久久久9999爆乳 | 十大污视频 | 久久人人爽人人人人片 | 一区二区三区韩国 | 最新天堂在线视频 | 久久久久国 | 可以免费看的av毛片 | 翔田千里一区二区三区av | 国产人成视频在线观看 | xxx国产在线观看 | 一级黄色a级片 | 日韩女优在线播放 | 久久蜜桃av|