资源描述
(完整版)操作SQL Server CE
操作SQL Server CE(SqlCE)数据库的例子
作者: 发布时间:2006-10-11 13:10:00 | 【字体:大 中 小】
本节将指导您完成使用 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 精简版数据提供程序的 SqlCeConnection、SqlCeEngine 和 SqlCeCommand 类.
注意 不能在此任务中运行仅用于特定步骤的代码。有关完整代码列表,请参见代码列表:使用 SQL Server CE 数据库。
创建新的 SQL Server CE 数据库
1. 启动 Visual Studio 。NET,然后打开一个新项目。
2. 创建对使用的命名空间的引用。
3. using System;
4. using System.IO;
5. using System.Text;
6. using System.Data;
7. using System.Data.SqlServerCe;
8. using System.Collections;
9. using System。Windows。Forms;
using System.Data。Common;
10. 创建 WalkThrough 类。
11. public class WalkThrough
12. {
13. static void Main()
14. {
15. SqlCeConnection conn = null;
16. try
{
17. 验证具有您打算使用的名称的数据库是否已存在。
18. if (File.Exists (Test。sdf) )
File.Delete (Test。sdf);
19. 使用 System。Data。SqlCeEngine 对象创建名为 Test。sdf 的空数据库。
注意 SQL Server CE 中,数据库名称的文件扩展名为 .sdf.
SqlCeEngine engine = new SqlCeEngine (Data Source = Test。sdf);
engine.CreateDatabase ();
20. 连接到这个新数据库.
21. 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. 执行参数化命令,将数据插入表中.
4. cmd。Parameters[p1].Value = 1;
5. cmd.Parameters[p2].Value = abc;
6. cmd。Parameters[p3]。Value = 15.66;
cmd。ExecuteNonQuery();
7. 清除参数,并检查已插入表中的数据.
若要使用 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 执行此任务,您需要 SqlCeDataReader 和 SqlCeCommand 对象。
注意 有关完整代码列表,请参见代码列表:使用 SQL Server CE 数据库。
1. 调用 SqlCeCommand 对象的 ExecuteReader 方法以创建 SqlCeDataReader 的实例.
SqlCeDataReader rdr = cmd.ExecuteReader();
2. 指示数据读取器 rdr 在行存在时在每行的列中显示数据。
3. while (rdr.Read())
4. {MessageBox.Show(col1 = + rdr。GetInt32(0) +
5. col2 = + rdr.GetString(1) +
6. col3 = + rdr。GetSqlMoney(2));
}
更改 SQL Server CE 数据库中的数据
在创建表后,可以以多种方式修改表中的数据:更改特定数据的属性,添加和删除数据行,甚至还可以通过修改表中的列来更改存储数据的方式。
在本节中,您将更改表项的值,查找更改的表的数据并处理所有错误。为执行这些步骤,您将使用在前面的任务中使用的类:SqlCeCommand 和 SqlCeDataReader。另外,您将使用 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 创建数据读取器的实例。
2. cmd.CommandText = SELECT * FROM TestTbl;
3. rdr = cmd。ExecuteReader();
4. while (rdr。Read())
5. {
6. MessageBox.Show( col1 = + rdr。GetInt32(0) +
7. col2 = + rdr.GetString(1) +
8. col3 = + rdr.GetSqlMoney(2));
9. }
}
10. 使用 SqlCeException 捕获任何错误,然后关闭与数据库的连接。
11. catch (SqlCeException e)
12. {
13. ShowErrors(e);
14. }
15. finally
16. {
17. if(conn。State == ConnectionState。Open)
18. conn.Close();
19. }
20. }
21. public static void ShowErrors(SqlCeException e)
22. {
23. SqlCeErrorCollection errorCollection = e.Errors;
24. StringBuilder bld = new StringBuilder();
25. foreach (SqlCeError err in errorCollection)
26. {
27. bld。Append(\n Error Code: + err。HResult。ToString(X));
28. bld。Append(\n Message : + err.Message);
29. bld。Append(\n Minor Err.: + err。NativeError);
30. bld.Append(\n Source : + err.Source);
31. foreach (int numPar in err。NumericErrorParameters)
32. {
33. if (0 != numPar) bld。Append(\n Num。 Par. : + numPar);
34. }
35. foreach (string errPar in err。ErrorParameters)
36. {
37. if (String。Empty != errPar) bld。Append(\n Err。 Par。 : + errPar);
38. }
39. MessageBox.Show(bld。ToString());
40. bld。Remove(0, bld.Length);
41. }
42. }
}
有关 SQL Server CE 中的错误处理的更多信息,请参见《SQL Server CE 联机手册》中的错误处理。
展开阅读全文