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; } } } }
Mobile RDA 同步数据库的类
最新推荐文章于 2024-10-17 18:58:27 发布