最近需要用pb連接sqlce資料庫(.sdf檔案),查了許多資料都未找到合適的連接方法。
哪位知道請指點一下,使用ODBC連接或oledb連接都可以。
謝謝。
uj5u.com熱心網友回復:
我使用的是PB9.0.3 8836uj5u.com熱心網友回復:
你去找到資料庫廠商的ODBC驅動應該就可以了uj5u.com熱心網友回復:
在搜索中打入sqlce odbc就可以找到不少解決方案uj5u.com熱心網友回復:
查了一下,未查到sqlce使用odbc的方法。想使用oledb進行連接,sqlce中也提供了sqlceoledb30.dll用于oledb連接,并且在visual studio中好像用的也是oledb連接方式。但我不知道在pb中如何建立oledb連接方式,在database profile中沒有slqce oledb的驅動,不知道如何將sqlceoledb30.dll注冊。
uj5u.com熱心網友回復:
UPUP,哪位幫幫忙uj5u.com熱心網友回復:
這兩天一直在查相關資料,都沒有查到。哪位對資料庫連接比較熟悉,幫試試,謝謝
uj5u.com熱心網友回復:
好,幫你看一下,下個資料庫研究一下uj5u.com熱心網友回復:
轉貼Sql Server 2005 - Sql Server Management Studio,連接時選擇資料庫型別為Sql Server Mobile,資料庫檔案一欄選擇到您需要的.sdf檔案即可。
說起SqlCe的安裝,說起來我有點不好意思的。為何呢?自從我從剛學使用.NET Companct Framework開始,就接觸到SqlCe的了,當時存在著兩個難題。一個是SqlCe的安裝,一個就是程式的打包。當然我今天只說一下我SqlCe的安裝咯。
其實也沒啥,SqlCe的安裝很簡單的。因為SqlCe的安裝包是安裝一個Agent,這個Agent用來建立SQL Server與設備上的SqlCe通信的一個Server Agent,如下圖(摘自SqlCE Book Online)
原則上安裝的是一個叫做Server Ce Server Agent的管理平臺。這個平臺提供一個從SQL Server到設備SqlCe的一個HTTP連接。用于資料互動。
先簡要介紹一下里面的Point:
1、SQL Server CE 資料庫引擎(Database Engine)
SQL CE資料庫引擎管理存盤著在基于Windows CE設備上的SQL Server資料,在發生少量資料記錄的變化時,此資料庫引擎可以通過插入、更新、洗掉來保持資料庫的一致性,可以通過使用兩種連接方案來使資料同步功能得以實作。
2、SQL Server CE客戶代理端
SQL Server CE客戶代理端是設備上用于連接的基本組件,維持著下列幾個物件:復制物件,遠程資料訪問(RDA)物件和引擎物件。通過使用這些物件,程式可以編程控制這些SQL Server連接。
3、SQL Server CE服務器代理端
SQL Server CE服務器代理端負責處理客戶代理端發出的HTTP請求。程式發出請求后,客戶代理端通過HTTP發送這些請求到服務器代理端,服務器代理端連接到SQL Server,并通過HTTP發送結果集到客戶代理端。在上圖沒有顯示的附加組件同樣包含在此處理程序中,這些組件運行在運行IIS的機器上。
合并復制與(RDA)使用不同的方法處理HTTP請求,同時也在運行IIS的機器上使用不同的SQL Server連接組件。
我是個Web盲,所以有些概念并不是很熟悉,比如說虛擬目錄、快照、HTTP傳輸等。
趕快回到本文的正題,安裝SqlCe的第一步是安裝這個Server Agent。而這個Agent的安裝取決于其版本要與SqlServer的版本對應,比如你的SqlServer2000版本是SP3,那么你必須使用SqlCeSP3這個版本,SqlServer2000的版本是SP4的,那你就必須使用SqlCeSP4的這個版本;需要說明的是所謂的SqlServer2000的SP3、SP4是通過打補丁完成的,關于這個SP3、SP4的補丁在MSDN網站上有下;而且這個補丁的安裝有兩部分,如SqlServer2000的SP4,安裝程式會先解壓安裝檔案到本地目錄里面,然后找到這個本地目錄SQL2KSP4,運行里面的一個批處理檔案setup.bat,再就是根據安裝步驟繼續就可以了。哦,對了,還必須有個前提是,你已經安裝了IIS。因為SqlCe與SqlServer的傳輸的通過HTTP來進行傳輸的,現在你知道安裝IIS的重要性了吧。
一般情況下,安裝完SqlCe后會直接進入SQL Server CE Connectivity Management的配置,這個連接管理平臺的配置就是為了使Server 2000與設備通信,分別有指向SQL Server CE Server Agent (sscesa20.dll)虛擬目錄的創建,HTTP認證方式的確定,還有就是NTFS權限配置,這些配置與Web配置有很大的相似之處吧。其實就是一個HTTP的連接配置。如果你熟悉Web那么你會很容易理解這些動作的要點。最后一個比較重要的是一個叫做Set NTFS permissions for the SQL Server snapshot folder.的選項。這個選項的必要之處在于它能夠為Server與SqlCe之間的資料傳輸提供一個快照,而且這個快照是非常必要的。實際操作比較簡單而但是很關鍵,只要你在C盤目錄下建立一個檔案夾并且修改這個檔案夾使其Web共享就可以了,這樣就提供給設備訪問這個快照檔案的權限。
到這里你已經完全進行了所以的安裝和配置步驟了,現在你要做的是在瀏覽器中輸入http://172.0.0.101/sqlce/sscesa20.dll這個路徑,如果出現SQL Server CE Server Agent的字樣,就說明你能夠在設備上進行訪問了。當然你要使用你自己的IP和虛擬目錄名。
現在你可以在設備上使用遠程資料訪問(RDA)和合并復制了;當然,使用合并復制還需要一些配置,但是這個不在今天的討論范圍內。
其實SQLCE的安裝不是很復雜,但是詳細描述一下還是很有必要的。這對于理解Server2000與SqlCe的資料互動有很大的幫助。
文章出處:http://www.diybl.com/course/3_program/jdkf/2007113/83116.html
uj5u.com熱心網友回復:
這個是mobile里的資料庫,是sqlserver的一個Agent,懷疑用odbc可能連接不了,你用ole db試試吧uj5u.com熱心網友回復:
呵呵,感謝你的回復。又查了半天sqlce資料庫的連接,在sqlce的英文論壇上看了半天,看的好累。還是沒有解決問題。
應該是用ole db介面進行連接。在visual studio中也是用oledb進行連接的。
但問題是,在安裝了sqlce驅動后,在pb的oledb連接中的provider串列中應該有該驅動介面,但是沒有。感覺像是sqlce驅動未寫注冊表,所以在pb中無法使用。
我再上網查查。微軟做的爛東西。
uj5u.com熱心網友回復:
mobile 5 中操作SDF資料庫的常用方法 收藏對于windows mobile sql 中的sdf檔案,很多朋友都會用到。方法也很簡單。同PC上操作SQL server,Oracle等都差不多。
下面共享一個操作SDF資料庫檔案的一個類,供Mobile開發新入門的朋友參考。歡迎留言進行交流。
在用此代碼之前,需要 using System.Data.SqlServerCe;
class CESql
...{
public void ConnOpen(SqlCeConnection Conn)
...{
if (Conn.State.ToString().Trim().Equals("Open"))
...{
Conn.Close();
}
Conn.Open();
}
public void ConnClose(SqlCeConnection Conn)
...{
if (Conn.State.ToString().Trim().Equals("Open"))
...{
Conn.Close();
}
}
public void ExecuteSql(string sql, SqlCeConnection Conn)
...{
SqlCeCommand MyCommand = new SqlCeCommand(sql, Conn);
MyCommand.ExecuteNonQuery();
Conn.Close();
}
public SqlCeDataReader GetDataReader(string strCMD, SqlCeConnection Conn)
...{
SqlCeDataReader myReader;
SqlCeCommand mycommand = new SqlCeCommand();
mycommand.CommandText = strCMD;
mycommand.Connection = Conn;
myReader = mycommand.ExecuteReader();
return myReader;
}
}
uj5u.com熱心網友回復:
參考自http://blog.csdn.net/ghd2004/archive/2008/03/25/2218121.aspx
試了半天也沒有連上,看來是幫不上大忙了
呵呵,你自己再研究研究吧
uj5u.com熱心網友回復:
又進行了半天測驗,還是沒法進行連接。估計是sqlce的驅動和powerbuilder無法匹配。
打算放棄了,沒辦法
uj5u.com熱心網友回復:
用.net來寫吧,uj5u.com熱心網友回復:
又進行了一些測驗,有些進展,但還是無法使用。簡略說一下吧。安裝sqlce驅動后,可以建立資料鏈接檔案udl,并且在udl中連接資料庫并測驗,連接正常。
在pb11.5的資料庫畫板中,通過oledb介面進行連接,有錯誤,無論是通過直接連接還是使用資料鏈接檔案連接都不行。
但在11.5中的資料庫畫板中,通過ADO.NET連接方式中使用namespace:system.data.oledb,再選擇sqlce的oledb驅動介面可以連上資料庫,并可以進行資料讀寫,直接連接和使用資料鏈接檔案都可以。實際上我覺得這種方法也是通過oledb進行連接,只不過通過ado進行轉接了一下。可能sqlce的驅動對ado的介面做的比較完整吧。
問題是,拷貝pb提供的連接代碼,
// Profile sdf
SQLCA.DBMS = "ADO.Net"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.OleDb',Provider='Microsoft.SQLSERVER.MOBILE.OLEDB.3.0',DataSource='c:\northwind.sdf'"
把連接代碼放到script中進行connect時,有例外發生,pb11.5崩潰,沒有任何提示就退出了,找不到解決辦法。直接連接和使用資料鏈接檔案連接兩種方法都試了,還是不行。
另外就是通過查資料了解到,sqlce沒有odbc介面,不能通過odbc方式進行連接。只提供oledb介面,而且oledb介面好像做的也有問題。關于使用oledb介面連接sqlce資料庫的問題一大堆。
郁悶中...
uj5u.com熱心網友回復:
sdf檔案是wince系統中的吧?你的PB也不能在wince中運行哦。
可以使用C#連接sdf檔案,我經過測驗,成功的。
uj5u.com熱心網友回復:
資料庫原理及開發上各種資料庫的連接步驟都有,不要老是在網上找資料,網路只是一個浪費時間的空間,看看書吧!浪費那么多時間都讀一本書了。uj5u.com熱心網友回復:
如果你懶的去圖書館,我可以把步驟發給你,不過這樣對你沒好處,你自己想想吧,中午回復我,不回復就不給你發了,還得讓我打字轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/79276.html
標籤:數據庫相關
