Mobile RDA 同步数据库的类--转
生活随笔
收集整理的這篇文章主要介紹了
Mobile RDA 同步数据库的类--转
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mobile RDA 同步數據庫的類--轉??
?using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
using?System.Data.SqlServerCe;
using?System.IO;
namespace?DataBaseCTLSpace
...{
????class?DataBaseCTL
????...{
????????private?string?assemblyLocalFolder;
????????private?SqlCeConnection?SQLConn;
????????private?string?InternetURL;
????????private?string?OleDbConnectString;
????????/**////?<summary>
????????///?構造函數,構造一個操作數據庫類
????????///?</summary>
????????///?<param?name="ServerDataBase">服務器數據庫名稱</param>
????????///?<param?name="DataBase">本地數據庫名稱</param>
????????///?<param?name="ServerName">服務器IP,或者名稱</param>
????????///?<param?name="UserName">用戶名</param>
????????///?<param?name="PassWord">密碼</param>
????????///?<param?name="IISShareDir">IIS共享服務目錄,構造InternetURL用</param>
????????public?DataBaseCTL(string?ServerDataBase,?string?LocalDataBase,?string?ServerName,?string?UserName,?string?PassWord,?string?IISShareDir)
????????...{
????????????assemblyLocalFolder?=?System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
????????????assemblyLocalFolder?=?assemblyLocalFolder?+?"\"?+?LocalDataBase?+?".sdf";
????????????InternetURL?=?"http://"?+?ServerName?+?"/"?+?IISShareDir?+?"/sqlcesa30.dll";
????????????OleDbConnectString?=?"Provider=sqloledb;server="?+?ServerName?+?";database="?+?ServerDataBase
???????????????????????????????+?";?User?Id="?+?UserName?+?";Password="?+?PassWord;
????????}
????????~DataBaseCTL()
????????...{
????????????SqlCeEngine?engine?=?new?SqlCeEngine("Data?Source?="?+?assemblyLocalFolder);
????????????engine.Shrink();
????????}
????????/**////?<summary>
????????///?創建數據庫文件
????????///?</summary>
????????///?<returns>成功?True,?失敗?False?表示有文件或者出現異常</returns>
????????public?bool?CreateDatbase()
????????...{
????????????if?(File.Exists(assemblyLocalFolder))?return?false;
????????????try
????????????...{
????????????????SqlCeEngine?engine?=?new?SqlCeEngine("Data?Source?="?+?assemblyLocalFolder);
????????????????engine.CreateDatabase();
????????????????engine.Dispose();
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?刪除數據庫文件
????????///?</summary>
????????///?<returns>成功?True,?失敗?False</returns>
????????public?bool?DeleteDatabase()
????????...{
????????????if?(File.Exists(assemblyLocalFolder))
????????????...{
????????????????File.Delete(assemblyLocalFolder);
????????????????return?true;
????????????}
????????????else
????????????????return?false;
????????}
????????/**////?<summary>
????????///?在本地執行SQL
????????///?</summary>
????????///?<param?name="SqlStr">SQL語句</param>
????????///?<returns>結果集</returns>
????????public?ResultSetView?ExecuteSqlLocal(string?SqlStr,ResultSetView?R)
????????...{
????????????SqlCeConnection?conn?=?new?SqlCeConnection("Data?Source?="?+?assemblyLocalFolder);
????????????//?創建并配置?SqlCeCommand?對象
????????????SqlCeCommand?cmd?=?conn.CreateCommand();
????????????cmd.CommandText?=?SqlStr;
????????????//?創建?SqlCeResultSet?對象,并配置為可滾動、可更新、檢測數據源更改
????????????ResultSetOptions?options?=?ResultSetOptions.Scrollable?|
?????????????????????????????????????????????????????ResultSetOptions.Sensitive?|
?????????????????????????????????????????????????????ResultSetOptions.Updatable;
????????????SqlCeResultSet?resultSet?=?cmd.ExecuteResultSet(options);
????????????//?創建?ResultSetView?對象,配置為只顯示序號為?1,3,5,8?的列
????????????ResultSetView?resultSetView?=?resultSet.ResultSetView;
????????????int[]?ordinals?=?new?int[]?...{?1,?3,?5,?8?};
????????????resultSetView.Ordinals?=?ordinals;
????????????R?=?resultSetView;
????????????return?resultSetView;
????????}
????????/**////?<summary>
????????///?在本地執行SQL
????????///?</summary>
????????///?<param?name="SqlStr">SQL語句</param>
????????///?<returns>結果</returns>
????????public?bool?ExecuteSqlLocal(string?SqlStr)
????????...{
????????????try
????????????...{
????????????????SqlCeConnection?conn?=?new?SqlCeConnection("Data?Source?="?+?assemblyLocalFolder);
????????????????SqlCeCommand?cmd?=?conn.CreateCommand();
????????????????cmd.CommandText?=?SqlStr;
????????????????conn.Open();
????????????????cmd.ExecuteNonQuery();
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?在服務器上執行Sql
????????///?</summary>
????????///?<param?name="SqlStr">Sql語句</param>
????????///?<returns></returns>
????????public?bool?ExecuteSqlServer(string?SqlStr)
????????...{
????????????try
????????????...{
????????????????SqlCeRemoteDataAccess?rda?=?null;
????????????????rda?=?new?SqlCeRemoteDataAccess();
????????????????rda.InternetUrl?=?InternetURL;
????????????????rda.LocalConnectionString?=?"Data?Source?="?+?assemblyLocalFolder;
????????????????rda.SubmitSql(SqlStr,OleDbConnectString);
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?從服務器上下載表
????????///?</summary>
????????///?<param?name="TableName">表名稱</param>
????????///?<returns></returns>
????????public?bool?DownloadTable(string?TableName)
????????...{
????????????if?(ExecuteSqlLocal("select?*?from?"?+?TableName))
????????????...{//有這個表
????????????????//提交服務器更新
????????????????if?(!UPDateTable(TableName))?return?false;
????????????????//刪除這個表
????????????????if?(!ExecuteSqlLocal("drop?table?"?+?TableName))?return?false;
????????????}
????????????
????????????try
????????????...{
????????????????SqlCeRemoteDataAccess?rda?=?null;
????????????????rda?=?new?SqlCeRemoteDataAccess();
????????????????rda.InternetUrl?=?InternetURL;
????????????????rda.LocalConnectionString?=?"Data?Source?="?+?assemblyLocalFolder;
????????????????rda.Pull(TableName,?"Select?*?from?"?+?TableName,?OleDbConnectString,?RdaTrackOption.TrackingOnWithIndexes);//
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?把更改好的表提交到服務器上
????????///?</summary>
????????///?<param?name="TableName">表名</param>
????????///?<returns></returns>
????????public?bool?UPDateTable(string?TableName)
????????...{
???????????try
????????????...{
????????????????SqlCeRemoteDataAccess?rda?=?null;
????????????????rda?=?new?SqlCeRemoteDataAccess();
????????????????rda.InternetUrl?=?InternetURL;
????????????????rda.LocalConnectionString?=?"Data?Source?="?+?assemblyLocalFolder;
????????????????rda.Push(TableName,?OleDbConnectString);//
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????}
}
?using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data;
using?System.Data.SqlServerCe;
using?System.IO;
namespace?DataBaseCTLSpace
...{
????class?DataBaseCTL
????...{
????????private?string?assemblyLocalFolder;
????????private?SqlCeConnection?SQLConn;
????????private?string?InternetURL;
????????private?string?OleDbConnectString;
????????/**////?<summary>
????????///?構造函數,構造一個操作數據庫類
????????///?</summary>
????????///?<param?name="ServerDataBase">服務器數據庫名稱</param>
????????///?<param?name="DataBase">本地數據庫名稱</param>
????????///?<param?name="ServerName">服務器IP,或者名稱</param>
????????///?<param?name="UserName">用戶名</param>
????????///?<param?name="PassWord">密碼</param>
????????///?<param?name="IISShareDir">IIS共享服務目錄,構造InternetURL用</param>
????????public?DataBaseCTL(string?ServerDataBase,?string?LocalDataBase,?string?ServerName,?string?UserName,?string?PassWord,?string?IISShareDir)
????????...{
????????????assemblyLocalFolder?=?System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
????????????assemblyLocalFolder?=?assemblyLocalFolder?+?"\"?+?LocalDataBase?+?".sdf";
????????????InternetURL?=?"http://"?+?ServerName?+?"/"?+?IISShareDir?+?"/sqlcesa30.dll";
????????????OleDbConnectString?=?"Provider=sqloledb;server="?+?ServerName?+?";database="?+?ServerDataBase
???????????????????????????????+?";?User?Id="?+?UserName?+?";Password="?+?PassWord;
????????}
????????~DataBaseCTL()
????????...{
????????????SqlCeEngine?engine?=?new?SqlCeEngine("Data?Source?="?+?assemblyLocalFolder);
????????????engine.Shrink();
????????}
????????/**////?<summary>
????????///?創建數據庫文件
????????///?</summary>
????????///?<returns>成功?True,?失敗?False?表示有文件或者出現異常</returns>
????????public?bool?CreateDatbase()
????????...{
????????????if?(File.Exists(assemblyLocalFolder))?return?false;
????????????try
????????????...{
????????????????SqlCeEngine?engine?=?new?SqlCeEngine("Data?Source?="?+?assemblyLocalFolder);
????????????????engine.CreateDatabase();
????????????????engine.Dispose();
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?刪除數據庫文件
????????///?</summary>
????????///?<returns>成功?True,?失敗?False</returns>
????????public?bool?DeleteDatabase()
????????...{
????????????if?(File.Exists(assemblyLocalFolder))
????????????...{
????????????????File.Delete(assemblyLocalFolder);
????????????????return?true;
????????????}
????????????else
????????????????return?false;
????????}
????????/**////?<summary>
????????///?在本地執行SQL
????????///?</summary>
????????///?<param?name="SqlStr">SQL語句</param>
????????///?<returns>結果集</returns>
????????public?ResultSetView?ExecuteSqlLocal(string?SqlStr,ResultSetView?R)
????????...{
????????????SqlCeConnection?conn?=?new?SqlCeConnection("Data?Source?="?+?assemblyLocalFolder);
????????????//?創建并配置?SqlCeCommand?對象
????????????SqlCeCommand?cmd?=?conn.CreateCommand();
????????????cmd.CommandText?=?SqlStr;
????????????//?創建?SqlCeResultSet?對象,并配置為可滾動、可更新、檢測數據源更改
????????????ResultSetOptions?options?=?ResultSetOptions.Scrollable?|
?????????????????????????????????????????????????????ResultSetOptions.Sensitive?|
?????????????????????????????????????????????????????ResultSetOptions.Updatable;
????????????SqlCeResultSet?resultSet?=?cmd.ExecuteResultSet(options);
????????????//?創建?ResultSetView?對象,配置為只顯示序號為?1,3,5,8?的列
????????????ResultSetView?resultSetView?=?resultSet.ResultSetView;
????????????int[]?ordinals?=?new?int[]?...{?1,?3,?5,?8?};
????????????resultSetView.Ordinals?=?ordinals;
????????????R?=?resultSetView;
????????????return?resultSetView;
????????}
????????/**////?<summary>
????????///?在本地執行SQL
????????///?</summary>
????????///?<param?name="SqlStr">SQL語句</param>
????????///?<returns>結果</returns>
????????public?bool?ExecuteSqlLocal(string?SqlStr)
????????...{
????????????try
????????????...{
????????????????SqlCeConnection?conn?=?new?SqlCeConnection("Data?Source?="?+?assemblyLocalFolder);
????????????????SqlCeCommand?cmd?=?conn.CreateCommand();
????????????????cmd.CommandText?=?SqlStr;
????????????????conn.Open();
????????????????cmd.ExecuteNonQuery();
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?在服務器上執行Sql
????????///?</summary>
????????///?<param?name="SqlStr">Sql語句</param>
????????///?<returns></returns>
????????public?bool?ExecuteSqlServer(string?SqlStr)
????????...{
????????????try
????????????...{
????????????????SqlCeRemoteDataAccess?rda?=?null;
????????????????rda?=?new?SqlCeRemoteDataAccess();
????????????????rda.InternetUrl?=?InternetURL;
????????????????rda.LocalConnectionString?=?"Data?Source?="?+?assemblyLocalFolder;
????????????????rda.SubmitSql(SqlStr,OleDbConnectString);
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?從服務器上下載表
????????///?</summary>
????????///?<param?name="TableName">表名稱</param>
????????///?<returns></returns>
????????public?bool?DownloadTable(string?TableName)
????????...{
????????????if?(ExecuteSqlLocal("select?*?from?"?+?TableName))
????????????...{//有這個表
????????????????//提交服務器更新
????????????????if?(!UPDateTable(TableName))?return?false;
????????????????//刪除這個表
????????????????if?(!ExecuteSqlLocal("drop?table?"?+?TableName))?return?false;
????????????}
????????????
????????????try
????????????...{
????????????????SqlCeRemoteDataAccess?rda?=?null;
????????????????rda?=?new?SqlCeRemoteDataAccess();
????????????????rda.InternetUrl?=?InternetURL;
????????????????rda.LocalConnectionString?=?"Data?Source?="?+?assemblyLocalFolder;
????????????????rda.Pull(TableName,?"Select?*?from?"?+?TableName,?OleDbConnectString,?RdaTrackOption.TrackingOnWithIndexes);//
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????????/**////?<summary>
????????///?把更改好的表提交到服務器上
????????///?</summary>
????????///?<param?name="TableName">表名</param>
????????///?<returns></returns>
????????public?bool?UPDateTable(string?TableName)
????????...{
???????????try
????????????...{
????????????????SqlCeRemoteDataAccess?rda?=?null;
????????????????rda?=?new?SqlCeRemoteDataAccess();
????????????????rda.InternetUrl?=?InternetURL;
????????????????rda.LocalConnectionString?=?"Data?Source?="?+?assemblyLocalFolder;
????????????????rda.Push(TableName,?OleDbConnectString);//
????????????????return?true;
????????????}
????????????catch
????????????...{
????????????????return?false;
????????????}
????????}
????}
}
轉載于:https://www.cnblogs.com/tdskee/archive/2008/03/25/1121888.html
總結
以上是生活随笔為你收集整理的Mobile RDA 同步数据库的类--转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET 2.0(C#) - Th
- 下一篇: [导入]宁静