成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Windows Phone 7本地?cái)?shù)據(jù)庫(kù)的多樣化訪問(wèn)

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
作為移動(dòng)數(shù)據(jù)庫(kù)的Effiproz我們之前曾有過(guò)介紹,本文將討論的是Windows Phone 7本地?cái)?shù)據(jù)庫(kù)的多樣化訪問(wèn)方面的內(nèi)容。

最近個(gè)人的時(shí)間顯得比較緊迫. 有一些想法一直沒(méi)有時(shí)間去驗(yàn)證.上周五在MSDN上公布的活動(dòng)Silverlight Events:與John Papa面對(duì)面學(xué)習(xí)Silverlight 4中因?yàn)橐粫r(shí)疏忽趕到MSDN會(huì)客廳是活動(dòng)已經(jīng)結(jié)束了. 不過(guò)我順便看看活動(dòng)中對(duì)JohnPapa提出問(wèn)題: 其中有人明確提出Silverlight 下一版本會(huì)把本地?cái)?shù)據(jù)庫(kù)訪問(wèn)支持是否會(huì)在下一個(gè)Silverlight版本加入?[可惜我沒(méi)有看到John Papa本人的回復(fù)]. 這突然讓我聯(lián)想到最近一直在看官方公布開(kāi)源項(xiàng)目中Windows Phone 7對(duì)本地?cái)?shù)據(jù)數(shù)據(jù)庫(kù)操作方式. 恰好上周我做了一個(gè)SQlite相關(guān)測(cè)試. 有意無(wú)意間讓我把Windows Phone 7 對(duì)本地?cái)?shù)據(jù)庫(kù)Local DataBase訪問(wèn)與開(kāi)源數(shù)據(jù)庫(kù)聯(lián)系在一起.如下是我個(gè)人對(duì)WP7本地?cái)?shù)據(jù)庫(kù)訪問(wèn)方式的驗(yàn)證. 如有疑問(wèn)請(qǐng)及時(shí)提出

Windows Phone 7在CTP 版本時(shí)微軟官方就對(duì)開(kāi)發(fā)者提出問(wèn)題做了兩次集體回應(yīng). 一次是在3月19日 另外一次是5月19日.回復(fù)內(nèi)容詳見(jiàn)Windows Phone 7 Series Developer General FAQ (Updated 5/19/2010), 內(nèi)容中包含了WP7開(kāi)發(fā)中多個(gè)細(xì)節(jié)和下一步需要改善的方向等做了明確回復(fù). 當(dāng)然其中也包含了大家很關(guān)心的數(shù)據(jù)訪問(wèn). 具體回應(yīng)內(nèi)容如下:

在Windows Phone 7 Series的設(shè)備上有沒(méi)有本地?cái)?shù)據(jù)庫(kù)可以利用?

沒(méi)有,在最初的Windows Phone 7 Series上沒(méi)有本地?cái)?shù)據(jù)庫(kù)API可以利用

我應(yīng)該如何為我的應(yīng)用程序存儲(chǔ)信息?

你可以將信息存儲(chǔ)在自己的存儲(chǔ)空間里。如果你需要大型的數(shù)據(jù)庫(kù)這里有一些選擇:Windows Phone 7 Seires 已經(jīng)支持WebServices,它可以讓你容易的訪問(wèn)存儲(chǔ)在Internet上的信息。使用一個(gè)可以被WebServices訪問(wèn)的數(shù)據(jù)庫(kù),你的應(yīng)用程序就可以在連接Internet的情況下實(shí)時(shí)的獲取數(shù)據(jù).

以后會(huì)支持本地?cái)?shù)據(jù)庫(kù)嗎?

當(dāng)前我們沒(méi)有宣告這樣的計(jì)劃來(lái)增加這一功能;但是我們會(huì)密切關(guān)注開(kāi)發(fā)人員和用戶的需求并識(shí)別哪些特性會(huì)給每個(gè)人帶來(lái)好處

如上翻譯過(guò)來(lái),更多細(xì)節(jié)請(qǐng)查看原文.

目前WP7已經(jīng)是Beta版本了. Windows Phone 7 支持訪問(wèn)數(shù)據(jù)幾種方式為: XML、Isolated Storage[SL獨(dú)立存儲(chǔ)]、Cloud[云存儲(chǔ)].    官方意思很明確 暫不支持本地?cái)?shù)據(jù)庫(kù)訪問(wèn). 難道我們真的沒(méi)有其他選擇嗎?未必如此.

<1>Effiproz For Windows Phone 7

在上一篇中由Effiproz DataBase來(lái)看.NET開(kāi)源數(shù)據(jù)庫(kù)發(fā)展我提到Effiproz開(kāi)源數(shù)據(jù)庫(kù).NET多方面支持,其中就包含WP7.這為我們把Effiproz本地?cái)?shù)據(jù)庫(kù)提供訪問(wèn)WP7數(shù)據(jù)提供了可能.首先說(shuō)明Effiproz運(yùn)用在WP7條件:  Windows Phone Developer Tools Beta[最新版本]/VS2010[工具].

首先創(chuàng)建一個(gè)WP7程序 引入Effiproz數(shù)據(jù)庫(kù)DLL[詳見(jiàn)源碼下載]到項(xiàng)目中:

2010-09-01_170730

創(chuàng)建一個(gè)界面用戶輸入用戶名和密碼并 保存到Effiproz數(shù)據(jù)庫(kù)中:

2010-09-01_170550

2010-08-31_184024

數(shù)據(jù)插入成功后自動(dòng)查詢并實(shí)現(xiàn)出來(lái):

2010-09-01_171225

也許有人會(huì)注意到兩個(gè)FileDB和MemoryDB 按鈕. 其實(shí)對(duì)應(yīng)后臺(tái)中Effproze數(shù)據(jù)兩種存儲(chǔ)數(shù)據(jù)模式:文件和內(nèi)存模式. 上篇中我就曾講到第一個(gè)純.NET版本開(kāi)源數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題矛盾就是這兩種模式. 內(nèi)存模式中數(shù)據(jù)提取直接 速度較快. 免去File模式讀取硬盤(pán)IO和每次創(chuàng)建Connection的時(shí)間. 但是缺點(diǎn)也很致命. 速度雖然有了一定提升 但最終代價(jià)是我們數(shù)據(jù)無(wú)法再內(nèi)存消失后存儲(chǔ). 也就是數(shù)據(jù)最終無(wú)法持久化存儲(chǔ)文件中.  EffProze就是從HSQL繼承而來(lái). 所以保存這兩種模式 供用戶更多場(chǎng)景下選擇. 先看一下FileDB模式代碼實(shí)際創(chuàng)建:建:

  1. private void AddUserInfor_Click(object sender, RoutedEventArgs e)     
  2.     {     
  3.             //用戶信息  
  4. WP7_LocalDBDemo.DataEntity.Customer newcustomer = new DataEntity.Customer  
  5.  {     
  6.    Username=this.username.Text,    
  7.   Password=this.passsword.Text   
  8.    };    
  9.   string dbname = @"wp7db.db3";   
  10. string getreply = string.Empty;//回調(diào)信息   
  11.   //如果數(shù)據(jù)庫(kù)文件不存在 自動(dòng)創(chuàng)建   
  12.  Sqlite3.sqlite3 newsqlite = new Sqlite3.sqlite3();   
  13.     int getres = Sqlite3.sqlite3_open(dbname,ref newsqlite);    
  14.  if (getres == Sqlite3.SQLITE_OK)    
  15.     {    
  16.      //創(chuàng)建表   
  17.        string sql = @"Create Table Customer   
  18.                       (    
  19.                    customername varchar(100),    
  20.                              customerpass varchar(100)  
  21.                      )  ";    
  22. Sqlite3.exec(newsqlite, sql, 0, 0, 0);   
  23. string insertsql = @"insert into Customer Values('"+newcustomer.Username+"','"+newcustomer.Password+"')";   
  24.      int getinsertres = Sqlite3.exec(newsqlite, insertsql, 0, 0, 0);   
  25.             if (getinsertres == Sqlite3.SQLITE_OK)    
  26.      {    
  27.             MessageBox.Show("數(shù)據(jù)插入成功!");    
  28.       }   
  29.           else    
  30.     {    
  31.         MessageBox.Show("數(shù)據(jù)插入失敗!");   
  32.        }     
  33.          //自動(dòng)查詢數(shù)據(jù)    
  34.        string querysql = @"select * from Customer";   
  35. Sqlite3.dxCallback getcallback = new Sqlite3.dxCallback(TakeCallmethod);  
  36. int getlocalres=Sqlite3.sqlite3_exec(newsqlite,querysql,getcallback,null,ref getreply);    
  37.   if (getlocalres == Sqlite3.SQLITE_OPEN_READWRITE)  
  38.   {   
  39.    //需要一個(gè)執(zhí)行Reader API?   
  40.    //this.listBox1.Items.Add(getresdd.ToString());    
  41.        }   
  42.         }    
  43.   } 

EffProze數(shù)據(jù)庫(kù)基本上引入T-SQL大部分關(guān)鍵字支持,基本上合ADO.NET連接數(shù)據(jù)庫(kù)方式雷同. 這也讓.NET程序員不用再看EffProze新的API痛苦,而通過(guò)ADO.NET方式對(duì)比即可輕松編碼.在代碼中連接字符串中connection type=FILE/Memory 每次連接都需要指定采用數(shù)據(jù)庫(kù)模式. 這是必須的. Memory模式大同小異不在贅述.

當(dāng)有了EffProze數(shù)據(jù)庫(kù)在WP7中作一些復(fù)雜數(shù)據(jù)操作. 是否考慮我們我們這樣在代碼方式太過(guò)粗糙原始. 我們需要一個(gè)查詢工具.

當(dāng)然EffPoze官方也為我們考慮到這點(diǎn). 特意推出一款QueryTool. 當(dāng)然有多個(gè)版本的,你想快速體驗(yàn)可以訪問(wèn)QueryTool in Silverlight 4 liveDemo 把QueryTool利用Silverlight 版本 4來(lái)實(shí)現(xiàn). 另外一個(gè)版本需要到官方下載 QueryTool 1.2 Version[點(diǎn)擊下載]:  提示目前工具支持.NET版本是3.5以上 本地運(yùn)行:

2010-09-01_174950

如上提示我們需要打開(kāi)數(shù)據(jù)庫(kù)文件,Effproze數(shù)據(jù)庫(kù)文件格式為: [.properties]  編寫(xiě)的SQL腳本對(duì)應(yīng)格式為:[.Script]和SQl那一套完全不同.  下載文件中有實(shí)例數(shù)據(jù)庫(kù)SamplyDB. 打開(kāi):

2010-09-01_175711

很簡(jiǎn)單布局,類似SQLSErver. 對(duì)T-SQl標(biāo)準(zhǔn)中關(guān)鍵字全面進(jìn)行高亮支持. 這比SQlite工具要友好. 但我個(gè)人使用總體覺(jué)得很難受.  用戶體驗(yàn)不太好. 其中涉及幾個(gè)方面:

A:對(duì)T-Sql標(biāo)準(zhǔn)的有些關(guān)鍵字語(yǔ)法檢查太過(guò)于嚴(yán)密. 大小寫(xiě)敏感. 寫(xiě)T-Sql出錯(cuò)幾率大大增加.

B:工具功能過(guò)于簡(jiǎn)單. 左邊菜單中除了展出和隱藏沒(méi)有任何對(duì)DataBase和表 以及View /Proc的直接操作 只能用T-sql, 這樣一來(lái) 我們隊(duì)數(shù)據(jù)庫(kù)操作全部靠T-sql 工作量劇增.

C:最令我不舒服的是 每次出現(xiàn)錯(cuò)誤提示太過(guò)于簡(jiǎn)單. 特別大批量T-SQl 無(wú)法準(zhǔn)確定位錯(cuò)誤大概位置 那就更讓人望而生畏了.

D:沒(méi)有批量數(shù)據(jù)導(dǎo)入導(dǎo)出. 對(duì)于數(shù)據(jù)插入 沒(méi)有這樣的功能 工作量 真是太令人后怕了.

所以這個(gè)對(duì)使用這個(gè)工具原則是: 能避免使用就盡量避免使用. 基本上我昨天調(diào)試一個(gè)對(duì)數(shù)據(jù)庫(kù)所有存儲(chǔ)過(guò)程加密 調(diào)到最后看到下面始終不變錯(cuò)誤提示我先崩潰掉了.真是很杯具啊. 各位也可以適當(dāng)使用.

如上是EffProze數(shù)據(jù)庫(kù)對(duì)WP7數(shù)據(jù)訪問(wèn)支持一個(gè)簡(jiǎn)單示例以及基本工具使用. 如有疑問(wèn)請(qǐng)?jiān)诹粞灾刑岢?我會(huì)及時(shí)回復(fù) ,提供EffProze use In WP7本篇源碼下載:

 /Files/chenkai/EffProzeInWp7Codechenkai.rar

<2>SQlite For Windows  Phone 7

在本地?cái)?shù)據(jù)庫(kù)訪問(wèn)其實(shí)我最先嘗試SQlite,作為移動(dòng)平臺(tái)Android默認(rèn)數(shù)據(jù)庫(kù)大量運(yùn)用,沒(méi)有其他原因—只是因?yàn)槲覀€(gè)人對(duì)Sqlite操作很熟. 雖然沒(méi)有了WP7官方的支持. 但是開(kāi)源社區(qū)力量無(wú)線的. 國(guó)外有人改寫(xiě)開(kāi)源Sqlite 3版本使其支持WP7本地?cái)?shù)據(jù)訪問(wèn). 我們需要添加一個(gè)DLL: Community.CsharpSqlite.WP.dll [源碼中]引用.

2010-08-31_174931

 創(chuàng)建一個(gè)簡(jiǎn)單頁(yè)面測(cè)試 添加數(shù)據(jù)后自動(dòng)查詢數(shù)據(jù)并顯示ListBox中:

2010-08-31_1838162010-08-31_184024

插入數(shù)據(jù)成功 把插入數(shù)據(jù)通過(guò)自動(dòng)查詢方式顯示在ListBox中 添加數(shù)據(jù)代碼:

  1. private void AddUserInfor_Click(object sender, RoutedEventArgs e)    
  2.     {    
  3.        //用戶信息   
  4. WP7_LocalDBDemo.DataEntity.Customer newcustomer = new DataEntity.Customer   
  5.            {     
  6.         Username=this.username.Text,    
  7. Password=this.passsword.Text    
  8.      };   
  9.      string dbname = @"wp7db.db3";    
  10.       string getreply = string.Empty;//回調(diào)信息   
  11.           //如果數(shù)據(jù)庫(kù)文件不存在 自動(dòng)創(chuàng)建   
  12.         Sqlite3.sqlite3 newsqlite = new Sqlite3.sqlite3();   
  13.    int getres = Sqlite3.sqlite3_open(dbname,ref newsqlite);    
  14.              if (getres == Sqlite3.SQLITE_OK)    
  15.       {   
  16.         //創(chuàng)建表   
  17.        string sql = @"Create Table Customer   
  18.         (   
  19.           customername varchar(100),  
  20.     customerpass varchar(100)   
  21.                            )  ";    
  22.          Sqlite3.exec(newsqlite, sql, 0, 0, 0);    
  23. string insertsql = @"insert into Customer Values('"+newcustomer.Username+"','"+newcustomer.Password+"')";  
  24.         int getinsertres = Sqlite3.exec(newsqlite, insertsql, 0, 0, 0);  
  25.                   if (getinsertres == Sqlite3.SQLITE_OK)  
  26.           {   
  27.    MessageBox.Show("數(shù)據(jù)插入成功!");   
  28.    }    
  29.         else   
  30.           {    
  31.       MessageBox.Show("數(shù)據(jù)插入失敗!");   
  32.       }    
  33.     //自動(dòng)查詢數(shù)據(jù)     
  34.           string querysql = @"select * from Customer";  
  35. Sqlite3.dxCallback getcallback = new Sqlite3.dxCallback(TakeCallmethod);    
  36.                int getlocalres=Sqlite3.sqlite3_exec(newsqlite,querysql,getcallback,null,ref getreply);    
  37.           if (getlocalres == Sqlite3.SQLITE_OPEN_READWRITE)    
  38.           {    
  39.                    //需要一個(gè)執(zhí)行Reader API?    
  40.                   //this.listBox1.Items.Add(getresdd.ToString());   
  41.            }    
  42.         }    
  43.     } 

SQlite 3修改后能夠支持對(duì)WP7數(shù)據(jù)訪問(wèn) .大概方式基本同EffProze有些雷同.  但是在實(shí)際編碼中.Effproze封裝API的基本同ADO.NET相似. 這樣廣大的.NET程序員無(wú)需再熟悉EffProze數(shù)據(jù)庫(kù)自己API, 而修改SQlite 3支持WP7 不同的是. 這里SQlite 3完全創(chuàng)造自己的一套API. 和原來(lái)支持.NET 訪問(wèn)的ADO.NET For SQlite 3  DataProvders完全不同. 沒(méi)有任何關(guān)聯(lián).

那就痛苦了.所以我們需要一個(gè)SQlite 3訪問(wèn)WP7 的詳細(xì)API.  但是很遺憾.如果訪問(wèn)到這份API 需要翻墻.具體地址:Sqlite 3 For Windows Phoen Created API訪問(wèn)地址:  Sqlite 3 For Wp7 API 如有哪位同志翻墻成功 請(qǐng)備份這份API貢獻(xiàn)出來(lái)吧.

SQlite 3支持了WP7的本地?cái)?shù)據(jù)訪問(wèn). 但是SQlite 3與EffProze最大特點(diǎn)是Sqlite 3沒(méi)有數(shù)據(jù)庫(kù)鏈接模式之分[內(nèi)存/文件模式], 我在做完這個(gè)實(shí)例后 測(cè)試發(fā)現(xiàn). 硬盤(pán)上不存在wp7db.db3這個(gè)文件. 因此我懷疑修改后SQlite 3版本對(duì)數(shù)據(jù)存儲(chǔ)模式應(yīng)該放到內(nèi)存中的. 當(dāng)然這是我個(gè)人猜測(cè). 沒(méi)有得到作者本人的證實(shí).

如上寫(xiě)了一個(gè)建的Sqlite For Wp7 DEmo. 源碼下載如下:

/Files/chenkai/WP7_LocalDBDemo.rar

<3>結(jié)語(yǔ)

本篇主要驗(yàn)證EffProze和修改Sqlite 數(shù)據(jù)庫(kù)對(duì)Windows Phone 7 本地?cái)?shù)據(jù)訪問(wèn)支持.  測(cè)試結(jié)果是可行的.這是第一篇 下一篇我會(huì)詳細(xì)介紹其他方式來(lái)做WP7本地?cái)?shù)據(jù)訪問(wèn).  當(dāng)然如上也是我個(gè)人測(cè)試. 難免會(huì)有紕漏的地方. 如果喲疑問(wèn)請(qǐng)及時(shí)留言. 我會(huì)及時(shí)回復(fù).

參考資料:

Sqlite 3 For Windows Phoen Created

Sqlite 3 For Wp7 API

LocalDAtaBase  For Windows  Phone 7

DotaSys Windows  Phone 7  Demo

原文標(biāo)題:多樣化實(shí)現(xiàn)Windows Phone 7本地?cái)?shù)據(jù)庫(kù)訪問(wèn)<1>

鏈接:http://www.cnblogs.com/chenkai/archive/2010/09/01/1815186.html

【編輯推薦】

  1. 用NoSQL來(lái)替代MySQL在Digg中的原因
  2. MongoDB CEO談NoSQL的大數(shù)據(jù)量處理能力
  3. 51CTO專訪蓋國(guó)強(qiáng):NoSQL很火 但還需市場(chǎng)檢驗(yàn)
  4. 詳解NoSQL數(shù)據(jù)庫(kù)使用實(shí)例
  5. 云計(jì)算時(shí)代NoSQL當(dāng)?shù)?關(guān)系數(shù)據(jù)庫(kù)日薄西山 
責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2011-06-14 08:54:46

MangoWindows Pho

2009-12-19 09:28:30

Windows 7網(wǎng)絡(luò)連接

2011-05-12 10:25:14

WP7數(shù)據(jù)庫(kù)Sterling

2011-05-18 10:21:53

SQLite

2013-04-25 16:06:01

Windows PhoWindows Pho

2015-12-11 22:40:10

大數(shù)據(jù)OpenPOWERPOWER8

2016-08-12 09:24:33

開(kāi)源多樣化亮點(diǎn)

2011-06-15 10:18:12

Windows PhoPerst

2011-06-28 13:11:10

2010-07-29 17:00:36

Flex餅圖

2024-06-06 17:32:41

2011-05-12 13:42:04

Windows PhoWindows Pho

2013-02-22 11:39:27

BGP控制方式路由流向

2011-06-22 09:54:13

網(wǎng)絡(luò)技術(shù)虛擬化網(wǎng)絡(luò)OpenFlow

2015-03-23 16:42:06

2021-02-05 23:18:55

云計(jì)算IT技術(shù)

2010-11-09 10:37:21

2015-10-09 11:27:36

綜合布線布線技術(shù)

2017-05-16 15:00:25

存儲(chǔ)云端解決方案

2015-01-07 09:42:55

5G25G以太網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产69精品久久久久777 | 老司机午夜性大片 | 婷婷久久五月天 | 一级免费毛片 | 乱码av午夜噜噜噜噜动漫 | 成人午夜精品一区二区三区 | 三极网站 | 五月激情久久 | 婷婷色在线 | 精品欧美一区二区三区久久久 | 国外成人在线视频 | 日韩欧美在线不卡 | 国产三区四区 | 欧美精品91 | 精品三区 | 日本午夜免费福利视频 | 九九精品视频在线 | 日本一区二区三区在线观看 | 中文字幕国产精品 | 国产精品99久久久久久宅男 | 日本一二三区电影 | 国产精品日韩一区 | 浴室洗澡偷拍一区二区 | 欧美 日本 国产 | 久久久www成人免费精品张筱雨 | 91精品国产99 | 国产精品久久久久久久久久久久 | 国产精品久久久久久久久久久久冷 | 久久久久国产精品午夜一区 | 亚洲精品久久区二区三区蜜桃臀 | 精品一区电影 | 久草在线青青草 | 天堂色综合 | 我要看黄色录像一级片 | 精品国产三级 | 欧美高清性xxxxhd | 久久成人精品 | 久久久国产一区二区三区四区小说 | 国产电影一区二区 | 国产高清一区二区 | 伊人成人免费视频 |