實現 手機端和伺服器端的資料同步技術

2021-04-30 21:13:53 字數 4551 閱讀 1483

///

///將源資料庫表的資料複製到 sql server compact edition 資料庫的表中。

///

///源資料庫連線接物件。

///目標 sql server compact edition 資料庫連線物件。

///源資料的查詢語句。

///目標資料庫表名稱。

///本方法假設目標 sql server compact edition 資料庫的表已經存在。

public

static

void

copytable(

idbconnection srcconnection, 

sqlceconnection destconnection, 

string

querystring, 

string

desttablename)

srcreader.close();

resultset.close();

}catch

(exception ex)}

由於 copytable 函式的源資料庫連線引數採用的是 idbconnection 介面,所以該方法可以支援多種源資料庫。**中還利用 idatareader.getvalues(object values) 和 sqlceupdatablerecord.setvalues(object values) 更方便的讀取和寫入資料。

在使用 copytable 函式之前必須預先建立好 sql ce 資料庫的表結構,並且 sql ce 資料庫的表結構必須跟 querystring 引數(select sql 語句)的查詢結果的表結構對應。

通過下面的**使用 copytable 函式:

//建立源 sql server 資料庫連線物件

string

srcconnstring ="

data source=(local);initial catalog=northwind;integrated security=true";

sqlconnection srcconnection 

=new

sqlconnection(srcconnstring);

//建立目標 sql server compact edition 資料庫連線物件

string

destconnstring =@"

data source=c:/northwind.sdf";

sqlceconnection destconnection 

=new

sqlceconnection(destconnstring);

verifydatabaseexists(destconnstring); //建立資料庫結構

srcconnection.open();

destconnection.open();

//複製資料

copytable(srcconnection, destconnection,

"select * from products", 

"products

");

copytable(srcconnection, destconnection, 

"select * from employees", 

"employees

");

srcconnection.close();

destconnection.close();

五、建立資料庫結構

上面說到在使用 copytable 函式之前 sql ce 資料庫必須存在並且表結構都建立好。我們現在就來編寫建立資料庫結構的**。首先建立乙個名為 dbschema.sql 的檔案,並編寫 northwind 資料庫中的 products 和 employees 表的建立指令碼:

create

table

products(

productid 

intnot

null

constraint

pk_products 

primary

key,

productname 

nvarchar(40

) not

null

,supplierid 

intnull

,categoryid 

intnull

,quantityperunit 

nvarchar(20

) null

,unitprice 

money

null

,unitsinstock 

smallint

null

,unitsonorder 

smallint

null

,reorderlevel 

smallint

null

,discontinued 

bitnot

null)go

create

table

employees(

employeeid 

intnot

null

constraint

pk_employees 

primary

key,

lastname 

nvarchar(20

) not

null

,firstname 

nvarchar(10

) not

null

,title 

nvarchar(30

) null

,titleofcourtesy 

nvarchar(25

) null

,birthdate 

datetime

null

,hiredate 

datetime

null

,address 

nvarchar(60

) null

,city 

nvarchar(15

) null

,region 

nvarchar(15

) null

,postalcode 

nvarchar(10

) null

,country 

nvarchar(15

) null

,homephone 

nvarchar(24

) null

,extension 

nvarchar(4

) null

,photo 

image

null

,notes 

ntext

null

,reportsto 

intnull

,photopath 

nvarchar

(255

) null)go

這段 sql 語句不能直接在 sql ce 上執行的,我們需要進行一些字串的處理。現在將該檔案新增到 visual studio 2005 的專案資源中。

並新增執行這段 sql 建立資料庫表結構的方法:

public

static

void

verifydatabaseexists(

string

connectionstring)

, stringsplitoptions.removeemptyentries);

sqlcecommand command 

=new

sqlcecommand();

command.connection 

=connection;

connection.open();

for(

inti =0

; i 

<

commands.length; i++)

}}}}

六、總結

效能測試的結果會因為環境的不同而有一些出入,我想留給大家去做會更有意義。不過我相信這是當前效能比較好的向 sql ce 匯入資料的方法之一。目前需要預先建立好 sql ce 的表結構是美中不足的地方,我會在後續文章中實現乙個自動根據查詢結果生成建立 sql ce 表結構的 sql 語句的**,其實並不難。

Android 客戶端資料和伺服器端的同步

今天研究的主題是 客戶端的資料重新整理,如何實現和客戶端資料庫的資料的同步,需要保證以下幾點 1.客戶端的資料儲存在客戶端本地,如果伺服器端資料沒有更新,不做無效重新整理 知乎上盧旭輝 的回答 因此本應用的資料等文字型別決定採用 每天更新一次資料,然後提供給使用者強制重新整理資料的功能。另外同步的問...

C 客戶端和伺服器端

1 c s 客戶端應用程式 winform wpf 平級 資料是存放在其他的電腦上或伺服器上 資料的加工是在使用者的電腦上執行的,會對使用者的電腦配置有所要求 2 b s 網頁端應用程式 asp.net 統稱 asp.net webform asp.net mvc 平級 使用者傳送乙個請求到iis伺...

TCP socket實現客戶端和伺服器端通訊

import socket def main 建立套接字 tcp client socket socket.socket socket.af inet,socket.sock stream 目的資訊 server ip 127.0.0.1 server port 60000 鏈結伺服器 tcp cl...