PDA项目 SQL CE 数据库注意事项
2008-02-29 11:55
197 查看
一:注意每次操作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;
}
二:检测数据库里是否存在某个表用: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;
}
相关文章推荐
- springMVC项目自动生成代码-创建数据库注意事项
- django项目数据库迁移过程记录及注意事项
- 创建数据库注意事项
- Java-SpringMVC 项目配置注意事项
- cocos2dx3.X项目重写(番外篇)3.X打包apk的注意事项
- 在linux下用tomcat部署java web项目的过程与注意事项(转)
- 数据库安全应用 使用MySQL的23个注意事项
- [置顶] Android必知必会-发布开源 Android 项目注意事项
- 网赚项目之站群第三课 站群上线以及注意事项
- android项目混淆打包注意事项
- 项目中在写ibatis中的sql语句时的几点注意事项:
- 数据库表设计注意事项
- (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)
- 数据库优化设计注意事项
- 嵌入式项目设计应该注意的事项
- 安装SQL Server 数据库时注意事项及优化SQL Server 数据库服务器配置
- 数据库优化设计注意事项
- liunx运行项目注意事项
- 在Android 项目时的防止Memory leak 要注意的事项
- springmvc项目注意事项