///
///將源資料庫表的資料複製到 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...