Mobile RDA 同步数据库的类

本文介绍了一个使用SQL Server Compact Edition (SQL CE)进行数据库创建、操作及与远程服务器同步的类库。主要内容包括数据库的创建与删除、本地SQL执行、从服务器下载表以及将更改后的表提交到服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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[] 1358 };
            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;
            }


        }

    }

}

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值