SQLCE经验总结

一:注意每次操作SQLCE前都Close一次,因为SQLCE2.0只支持一个连接;
二:检测数据库里是否存在某个表用:select table_name from Information_Schema.Tables;
三:SQLCE2.0 不支持存储过程、触发器等,都要用SQL来实现;
四:从XML转换过来的时间要转换一下:
        DateTime dt_c2 = DateTime.Parse(xn.ChildNodes[19].InnerXml);
        dt_c2.ToString("G"), //集装箱作业时间
五:SQLCE的字段类型和SQL Server的不一样,具体见SQLCE帮助文档
六:SQLCE不支持Distict 、top 等函数,Distinct可以用GroupBy来实现
七:SQLCE不支持如下语句:
select 'RT' = case when rt1 is not null then rt1 else '' end + 
case when rt2 is not null then rt2 else '' end + 
case when rt3 is not null then rt3 else '' end +
case when rt4 is not null then rt4 else '' end + 
case when rt5 is not null then rt5 else '' end + 
case when rt6 is not null then rt6 else '' end +
case when rt7 is not null then rt7 else '' end 
from ct_bay
现在是用程序来实现连接的
八:数据库操作部分:
// execute sql, returns first column in first row as an int
private int ExecuteScalarInt(string sql)
{
   int result = 0;
   object o = this.ExecuteScalar(sql);
   if (o != System.DBNull.Value)
    result = Convert.ToInt32(o);
   return result;
}
// execute sql, returns first column in first row as a string
private string ExecuteScalarString(string sql)
{
   string result = String.Empty;
   object o = this.ExecuteScalar(sql);
   if (o != System.DBNull.Value)
    result = Convert.ToString(o);
   return result;
}
// execute sql, returns DataSet with result of query
// uses specified tableName for table in DataSet
private DataSet Execute(string tableName, string sql)
{
   DataSet ds = new DataSet();
   try
   {
    SqlCeDataAdapter da = GetAdapter(sql);
    da.Fill(ds, tableName);
   }
   catch (SqlCeException ex)
   {
    HandleError(ex);
   }
   catch (Exception ex)
   {
    HandleError(ex);
   }
   return ds;
}
// execute sql, returns number of rows affected
protected internal int ExecuteNonQuery(string sql)
{
   int count=0;
   try
   {
    SqlCeCommand cmd = GetCommand();
    cmd.CommandText = sql;
    count = cmd.ExecuteNonQuery();
   }
   catch (SqlCeException ex)
   {
    HandleError(ex);
   }
   catch (Exception ex)
   {
    HandleError(ex);
   }
   return count;
}
private SqlCeDataReader ExecuteDataReaderSingleRow(string sql)
{
   try
   {
    SqlCeCommand cmd = GetCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sql;
    m_dtr = cmd.ExecuteReader(CommandBehavior.SingleRow);
   }
   catch (SqlCeException ex)
   {
    HandleError(ex);
   }
   catch (Exception ex)
   {
    HandleError(ex);
   }
   return m_dtr;
}
// execute sql, returns the first column of the first row
private object ExecuteScalar(string sql)
{
   object result=null;
   try
   {
    SqlCeCommand cmd = GetCommand();
    cmd.CommandText = sql;
    result = cmd.ExecuteScalar();
   }
   catch (SqlCeException ex)
   {
    HandleError(ex);
   }
   catch (Exception ex)
   {
    HandleError(ex);
   }
   return result;
}

//
// private helper functions
//
private void OpenConnection()
{
   // make sure we have open connection
   if (m_con == null)
    m_con = new SqlCeConnection(@"Data Source=\Program Files\ChinaTallyPDACSharp\ChinaTallyDB.sdf;");
   if (m_con.State == ConnectionState.Closed)
    m_con.Open();
}
  
// return command object
private SqlCeCommand GetCommand()
{
   OpenConnection();
   // create command object
   if (m_cmd == null)
   {
    m_cmd = new SqlCeCommand();
    m_cmd.Connection = m_con;
    m_cmd.CommandType = CommandType.Text;
   }
   
   m_cmd.CommandText = String.Empty;
   return m_cmd;
}

// return data adapter
private SqlCeDataAdapter GetAdapter(string sql)
{
   // make sure we have open connection
   if (m_con == null)
    m_con = new SqlCeConnection(@"Data Source=\Program Files\ChinaTallyPDACSharp\ChinaTallyDB.sdf;");
   if (m_con.State == ConnectionState.Closed){
    try{
     m_con.Open();
    }
    catch(SqlCeException ex){
                    throw ex;
    }
   }
   SqlCeDataAdapter scda = new SqlCeDataAdapter(sql, m_con);
   return scda;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sql server ce 的工具 非常有用 SQL Server 2005 移动版(SQL Server Mobile)或SQL Server 2000 Windows CE 2.0版(SQL Server CE 2.0)的企业和个人用户如果计划与SQL Server 2000或SQL Server 2005数据库保持同步,需要在您运行Microsoft Internet Information Services(IIS)的服务器上安装互联工具。 本页内容表述的是互联工具。请注意文件名中的“xx”是代表安装语言的标识符。最初仅有英文互联工具信息(“en”即标识符“XX”)。为满足向后兼容的需要,我们提供SQL Server CE 2.0复制软件。 请查阅安装互联工具的设置说明。 1. Microsoft SQL Server 2005移动版服务器工具(sqlce30setupxx.msi)在IIS 箱中安装SQL Server Mobile复制组件。 这个组件用于把移动设备中的SQL Server Mobile连接到SQL Server 2005、SQL Server 2000 SP3a、及 SQL Server 2000 SP4数据库。 2. Microsoft SQL Server 2000 Service Pack 4复制组件(sql2kxxsp4.msi)在IIS机器中安装SQL Server 2000 SP3a复制组件。这个组件用于把移动设备中的SQL Mobile数据库连接到SQL Server 2000 SP4数据库。 3. Microsoft SQL Server 2000 Service Pack 3a复制组件(sql2kxxsp3a.msi)在IIS机器中安装 SQL Server CE 2.0 及 SQL Server 2000 SP4 复制组件。 该组件用于把移动设备中的SQL Server CE 2.0数据库连接到SQL Server 2000 SP3a数据库。 4. 用于SQL Server 2000 SP4 (sqlce20sql2ksp4.exe)的SQL Server CE 2.0 复制组件在IIS机器中安装 SQL Server CE 2.0 及 SQL Server 2000 SP4 复制组件。该组件用于把移动设备中的SQL Server CE 2.0数据库连接到SQL Server 2000 SP4。 5. 用于SQL Server 2000 SP3a (sqlce20sql2ksp3a.exe)的SQL Server CE 2.0复制组件在IIS机器中安装SQL Server CE 2.0 及 SQL Server 2000 SP3a 复制组件。该组件用于把移动设备中的SQL Server CE 2.0数据库连接到SQL Server 2000 SP3a 数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值