演练:使用 SQL Server CE 数据库

本节将指导您完成使用 Microsoft SQL Server 2000 Windows CE Edition (SQL Server CE) 数据库时需要执行的主要任务。假定您没有任何 SQL Server CE 数据库,需要在新的 Microsoft Visual Studio .NET 项目中创建新的数据库。

该演练包括以下任务:

  • 创建新的 SQL Server CE 数据库
  • 读取 SQL Server CE 数据库数据
  • 更改 SQL Server CE 数据库中的数据

阐释以上每个任务步骤的代码旨在一起运行。不能在任务中运行仅用于特定步骤的代码。有关完整代码列表,请参见代码列表:使用 SQL Server CE 数据库

创建新的数据库

SQL Server CE 中的数据库是存储结构化数据的表集合。在可以存储数据库之前,必须创建数据库。在创建数据库之后,可以创建保存数据的表。

在本节中,您将创建一个新的数据库,然后创建一个表,最后将数据添加到该表中。若要执行这些步骤,请使用 SQL Server CE (System.Data.SqlServerCe) .NET Framework 精简版数据提供程序的SqlCeConnectionSqlCeEngineSqlCeCommand 类。

注意   不能在此任务中运行仅用于特定步骤的代码。有关完整代码列表,请参见 代码列表:使用 SQL Server CE 数据库

创建新的 SQL Server CE 数据库

  1. 启动 Visual Studio .NET,然后打开一个新项目。
  2. 创建对使用的命名空间的引用。
    using System;
    using System.IO;
    using System.Text;
    using System.Data;
    using System.Data.SqlServerCe;
    using System.Collections;
    using System.Windows.Forms;
    using System.Data.Common;
    
  3. 创建 WalkThrough 类。
    public class WalkThrough 
    {
        static void Main() 
        {
            SqlCeConnection conn = null;
    
            try 
            {
    
  4. 验证具有您打算使用的名称的数据库是否已存在。
                if (File.Exists ("Test.sdf") )
                    File.Delete ("Test.sdf");
    
  5. 使用 System.Data.SqlCeEngine 对象创建名为 Test.sdf 的空数据库。
    注意   SQL Server CE 中,数据库名称的文件扩展名为 .sdf。
                SqlCeEngine engine = new SqlCeEngine ("Data Source = Test.sdf");
                engine.CreateDatabase ();
    
  6. 连接到这个新数据库。
    conn = new SqlCeConnection ("Data Source = Test.sdf");
    conn.Open();
    

创建新表

  1. 使用 System.Data.SqlCeCommand 创建命令类的实例。
    SqlCeCommand cmd = conn.CreateCommand();
    
  2. 运行命令 cmd 创建表。用于创建表的指令必须在 cmd.CommandText 所包含的 SQL 代码中。

    若要使用 SQL Server CE 的 SQL 编程语言创建表,请使用 CREATE TABLE 语法。有关更多信息,请参见《SQL Server CE 联机手册》中的用于 SQL Server CE 的 SQL 参考

    cmd.CommandText = "CREATE TABLE TestTbl(col1 int PRIMARY KEY, col2 ntext, col3 money)";
    cmd.ExecuteNonQuery();
    

将数据添加到新表中

  1. 运行命令以添加数据行。与创建表相同,用于添加行的指令也必须在 cmd.CommandText 所包含的 SQL 代码中。

    若要使用 SQL Server CE 的 SQL 编程语言将行添加到表中,请使用 INSERT 语法。有关更多信息,请参见《SQL Server CE 联机手册》中的用于 SQL Server CE 的 SQL 参考

    cmd.CommandText =  "INSERT INTO TestTbl(col1, col2, col3) VALUES (0, 'abc', 15.66)";
    cmd.ExecuteNonQuery();
    
  2. 创建命令,使用参数将数据多次插入表中。

    参数可以更高效地查询数据库,因为可以使用一组包含参数的 SQL 语句插入多个值。有关更多信息,请参见《SQL Server CE 联机手册》的在查询中使用参数

    cmd.CommandText = "INSERT INTO TestTbl(col1, col2, col3) VALUES (?, ?, ?)";
    
    cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.Int));
    cmd.Parameters.Add(new SqlCeParameter("p2", SqlDbType.NText));
    cmd.Parameters.Add(new SqlCeParameter("p3", SqlDbType.Money));
    
    cmd.Parameters["p2"].Size = 50;
    
    cmd.Prepare();
    
  3. 执行参数化命令,将数据插入表中。
    cmd.Parameters["p1"].Value = 1;
    cmd.Parameters["p2"].Value = "abc";
    cmd.Parameters["p3"].Value = 15.66;
    cmd.ExecuteNonQuery();
    
  4. 清除参数,并检查已插入表中的数据。

    若要使用 SQL Server CE 的 SQL 编程语言读取现有数据,请使用 SELECT 语法。有关更多信息,请参见《SQL Server CE 联机手册》中的用于 SQL Server CE 的 SQL 参考

    cmd.Parameters.Clear();
    //Set the command text to a SELECT query.
    //
    cmd.CommandText = "SELECT * FROM TestTbl";
    

读取 SQL Server CE 数据库数据

读取数据库数据是一种常见的任务,通常涉及对表行信息的访问。为使用 System.Data.SqlServerCe 执行此任务,您需要SqlCeDataReaderSqlCeCommand 对象。

注意   有关完整代码列表,请参见 代码列表:使用 SQL Server CE 数据库
  1. 调用 SqlCeCommand 对象的 ExecuteReader 方法以创建 SqlCeDataReader 的实例。
    SqlCeDataReader rdr = cmd.ExecuteReader();
    
  2. 指示数据读取器 rdr 在行存在时在每行的列中显示数据。
    while (rdr.Read())
    {MessageBox.Show("col1 = " + rdr.GetInt32(0) + 
         "col2 = " + rdr.GetString(1) + 
         "col3 = " + rdr.GetSqlMoney(2));
    }
    

更改 SQL Server CE 数据库中的数据

在创建表后,可以以多种方式修改表中的数据:更改特定数据的属性,添加和删除数据行,甚至还可以通过修改表中的列来更改存储数据的方式。

在本节中,您将更改表项的值,查找更改的表的数据并处理所有错误。为执行这些步骤,您将使用在前面的任务中使用的类:SqlCeCommandSqlCeDataReader。另外,您将使用 SqlCeException 进行错误处理。

注意   不能在此任务中运行仅用于特定步骤的代码。有关完整代码列表,请参见 代码列表:使用 SQL Server CE 数据库

更新 SQL Server CE 表中的数据

  • 设置命令对象以使用 UPDATE 语句。

    若要使用 SQL Server CE 的 SQL 编程语言更改行列的值,请使用 UPDATE 语法。有关更多信息,请参见《SQL Server CE 联机手册》中的用于 SQL Server CE 的 SQL 参考

    cmd.CommandText = "UPDATE TestTbl SET col2 = 'some new value' WHERE col1 = 0";
    cmd.ExecuteNonQuery();
    

读取 SQL Server CE 表中的数据

  1. 设置命令对象以使用 SELECT 语句,然后通过执行 SqlCeCommand.ExecuteReader 创建数据读取器的实例。
                cmd.CommandText = "SELECT * FROM TestTbl";
    
                rdr = cmd.ExecuteReader();
    
                while (rdr.Read()) 
                {
                    MessageBox.Show(" col1 = " + rdr.GetInt32(0) + 
                        " col2 = " + rdr.GetString(1) +
                        " col3 = " + rdr.GetSqlMoney(2));
                }
    
            }
    
  2. 使用 SqlCeException 捕获任何错误,然后关闭与数据库的连接。
     catch (SqlCeException e) 
    {
          ShowErrors(e);
    }
    finally 
    {
       if(conn.State == ConnectionState.Open)
          conn.Close();
    }
    }
    
        public static void ShowErrors(SqlCeException e) 
        {
            SqlCeErrorCollection errorCollection = e.Errors;
    
            StringBuilder bld = new StringBuilder();
    
            foreach (SqlCeError err in errorCollection) 
            {
                bld.Append("\n Error Code: " + err.HResult.ToString("X"));
                bld.Append("\n Message   : " + err.Message);
                bld.Append("\n Minor Err.: " + err.NativeError);
                bld.Append("\n Source    : " + err.Source);
                    
                foreach (int numPar in err.NumericErrorParameters) 
                {
                    if (0 != numPar) bld.Append("\n Num. Par. : " + numPar);
                }
                    
                foreach (string errPar in err.ErrorParameters) 
                {
                    if (String.Empty != errPar) bld.Append("\n Err. Par. : " + errPar);
                }
    
                MessageBox.Show(bld.ToString());
                bld.Remove(0, bld.Length);
            }
        }
    }
    

有关 SQL Server CE 中的错误处理的更多信息,请参见《SQL Server CE 联机手册》中的错误处理

请参见

智能设备演练 | SQL Server CE



System.Data.SqlServerCe 命名空间

Visual Studio 2010
2(共 2)对本文的评价是有帮助 - 评价此主题

System.Data.SqlServerCe 命名空间是用于 SQL Server Compact 4.0 的托管数据提供程序。此命名空间是类的集合,这些类提供对 SQL Server Compact 4.0 数据库的访问。通过使用 System.Data.SqlServerCe,您可以从计算机创建和管理 SQL Server Compact 4.0 数据库。 

以下功能可用于创建 SQL Server Compact 4.0 桌面应用程序和 Web 应用程序。

  • 支持 TransactionScope 类。

  • ADO.NET Entity Framework (System.Data.SqlServerCe.Entity.dll) 的 SQL Server Compact 4.0 提供程序。

  • Visual Studio 2010 SP1 中的对 Visual C# 和 Visual Basic 应用程序开发的支持。

  • 支持在中等(部分)信任环境下工作。

  • 为了在 ASP.NET Web 应用程序中使用 SQL Server Compact,需要设置标志 SQLServerCompactEditionUnderWebHosting。该标志已删除并且 SQL Server Compact 4.0 可以轻松地在 Web 应用程序中用作嵌入数据库。

 说明
公共类ResultSetEnumerator可用于循环访问 ResultSet 对象中的记录集合的枚举器。ResultSetEnumerator 不应从代码直接使用。直接使用 SqlCeResultSet 对象可以获得更多功能。
公共类ResultSetView实现数据绑定接口,并在用户界面控件与 SqlCeResultSet 之间起到桥梁作用。
公共类RowView基础结构。
公共类SqlCeChangeTracking提供可用于跟踪对 SQL Server Compact 数据库中的表所做更改的方法。
公共类SqlCeCommand表示对数据源执行的 SQL 语句。
公共类SqlCeCommandBuilder提供一种方法,以自动生成用于协调对 DataSet 所做的更改和关联数据库的单表命令。无法继承此类。
公共类SqlCeConnection表示到 SQL Server Compact 数据源的连接是打开的。
公共类SqlCeConnectionStringBuilder提供一个简单的方法以便创建和管理 SqlCeConnection 类使用的连接字符串的内容。
公共类SqlCeDataAdapter表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。
公共类SqlCeDataReader提供从数据源读取数据行的只进流的方法。无法继承此类。
公共类SqlCeEngine表示 SQL Server Compact Engine 对象的属性、方法及其他对象。无法继承此类。
公共类SqlCeError收集与数据源返回的警告或错误有关的信息。无法继承此类。
公共类SqlCeErrorCollection收集 SQL Server Compact 的 .NET Compact Framework 数据访问接口产生的所有错误。无法继承此类。
公共类SqlCeException基础提供程序从 SQL Server Compact 数据源返回警告或错误时引发的异常。无法继承此类。
公共类SqlCeFlushFailureEventArgs封装 FlushFailure 事件的事件参数。
公共类SqlCeInfoMessageEventArgsInfoMessage 事件提供数据。无法继承此类。
公共类SqlCeInvalidDatabaseFormatException在 SQL Server Compact 尝试打开较旧或较新版本的数据库文件时,在基础提供程序从 Microsoft SQL Server Compact 数据源返回错误时引发的异常。
公共类SqlCeLockTimeoutException如果已经达到锁超时,则会引发此异常。
公共类SqlCeParameter表示 SqlCeCommand 的参数,还可表示该参数到一个 DataSet 列的映射。无法继承此类。
公共类SqlCeParameterCollection收集与 SqlCeCommand 有关的所有参数以及它们各自到 DataSet 列的映射。
公共类SqlCeProviderFactory表示一组方法,这些方法用于创建访问接口对数据源类的实现的实例。
公共类SqlCeRemoteDataAccess初始化 SqlCeRemoteDataAccess 对象的新实例。有关远程数据访问的更多信息,请参见使用远程数据访问 (RDA)
公共类SqlCeReplication初始化 SqlCeReplication 对象的新实例。有关 SQL Server 复制的详细信息,请参阅 SQL Server 联机丛书。有关 SQL Server Compact 中合并复制的详细信息,请参阅 SQL Server Compact 联机丛书。
公共类SqlCeResultSet一个可更新、可滚动并且可绑定的游标。
公共类SqlCeRowUpdatedEventArgsRowUpdated 事件提供数据。
公共类SqlCeRowUpdatingEventArgsRowUpdating 事件提供数据。
公共类SqlCeTransaction表示要在数据源执行的 SQL 事务。无法继承此类。
公共类SqlCeTransactionInProgressException在尝试某个操作而某个事务正在进行中时,在基础提供程序从 Microsoft SQL Server Compact 数据源返回错误时引发的异常。
公共类SqlCeType基础结构。
公共类SqlCeUpdatableRecord表示数据源中一行可更新的值。SqlCeResultSet 对象包含一个或多个 UpdatableRecords
公共类SqlMetaData基础结构。指定并检索从数据库中检索的参数和列中的元数据信息。无法继承此类。
 委托说明
公共委托OnStartTableDownload用户为开始从服务器下载表更改时激发的事件定义的委托。
公共委托OnStartTableUpload用户为开始将表更改上载到服务器时激发的事件定义的委托。
公共委托OnSynchronization一种用户定义的委托,使用调解程序工作期间报告的正在执行的同步事件。
公共委托SqlCeFlushFailureEventHandler必须实现侦听 FlushFailure 事件的委托。
公共委托SqlCeInfoMessageEventHandler表示将处理 SqlCeConnectionInfoMessage 事件的方法。
公共委托SqlCeRowUpdatedEventHandler表示将要处理 SqlCeDataAdapterRowUpdated 事件的方法。
公共委托SqlCeRowUpdatingEventHandler表示处理 SqlCeDataAdapterRowUpdating 事件的方法。
 枚举说明
公共枚举AddOption确定在添加订阅时是将订阅添加到现有数据库还是创建新的数据库。
公共枚举CommitMode当传递给 Commit 函数时,CommitMode 指定发生提交的时间。
公共枚举DbInsertOptions指定在使用 [System.Data.SqlServerCe.SqlCeResultSet.Insert] 方法时要使用的选项。
公共枚举DbRangeOptions指定在指定要查找的索引范围时,SetRange 方法使用的选项。
公共枚举DbSeekOptions指定 Seek 方法将如何对索引进行搜索的选项。
公共枚举DropOption指定使用 DropSubscription 方法删除订阅时,是保留还是删除数据库。
公共枚举ExchangeType指定仅将数据合并到发布服务器还是在发布服务器和订阅服务器之间进行双向合并。
公共枚举NetworkType指定在设置 SqlCeReplication 对象的 DistributorNetworkPublisherNetwork 属性时使用的网络协议。
公共枚举PurgeType指定当使用 SqlCeChangeTracking 类的 PurgeTombstoneTableData 方法或 PurgeTransactionSequenceData 方法时用于清除元数据的条件。
公共枚举RdaBatchOption指定是否将与 Push 相关联的行组成一批,归并到单个事务中。
公共枚举RdaTrackOption指定是否跟踪正被提取到设备的表。
公共枚举RepairOption当传递给 Repair 方法时,RepairOption 指定要执行的数据库修复类型。
公共枚举ResultSetOptions设置 ResultSetEnumerator 的选项。
公共枚举ResultSetSensitivity设置 ResultSetEnumerator 的敏感度。
公共枚举SecurityType指定复制期间在连接到发布服务器或分发服务器时要使用的安全模式。
公共枚举SnapshotTransferType控制如何将快照文件从分发服务器传输到运行 IIS 的计算机。
公共枚举TrackingKeyType指定用于标识跟踪数据的键的类型。
公共枚举TrackingOptions指定要跟踪的表操作。
公共枚举ValidateType指定要执行的数据验证的类型。
公共枚举VerifyOption这些选项确定要使用的数据库验证的级别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值