在 WPF 应用程序中连接和使用 SQL Compact Edition
Posted
技术标签:
【中文标题】在 WPF 应用程序中连接和使用 SQL Compact Edition【英文标题】:Connecting and Using SQL Compact Edition in a WPF application 【发布时间】:2013-08-12 12:03:19 【问题描述】:我只是跟上 WPF 和 C#。我已经编写了一个完整的桌面应用程序,它还可以。我现在正在开发一个数据库驱动的应用程序(数据库是一个临时存储,应用程序将与实时服务器同步)。我选择了 MsSql Compact Edition 作为我的应用程序数据库,但我似乎没有找到任何教程来分解 WPF 程序中的连接、访问和管理数据库。我对 php 和 mysql 之类的数据库、RDBMS 和 ORM 有很好的背景知识。转到桌面/MS 应用程序,我有以下问题。
-
创建数据库(我可以使用 VS 2012 尝试此操作,但欢迎提供提示)
将其添加(捆绑)到应用程序中。
对其执行 CRUD(一个简单的类或示例)
可以在同一解决方案的两个项目中使用一个数据库
我应该知道的其他事情,不要遗漏可用的 ORM(如果可用)及其各自的文档。
如果答案与使用数据库引擎(如 MySql 和 PHP)相关,我会很高兴。我只是需要一个故障。
我们将不胜感激。
提前致谢。
【问题讨论】:
【参考方案1】:SqlCompact 只是在本地文件系统上创建一个文件 (.sdf)。您可以即时创建它,然后在完成后将其删除..或保留它。这是我从我曾经做过的一个项目中获取的一些代码片段。它应该有助于解决创建/CRUD 问题。
using System.Data.SqlServerCe;
private SqlCeConnection InitializeDatabase()
string connectionString = CreateDatabase();
SqlCeConnection conn = new SqlCeConnection(connectionString);
conn.Open();
CreateTable(conn);
return conn;
private string CreateDatabase()
string dbPath = String.Format("0scanner.sdf", _rootPath);
if (File.Exists(dbPath))
File.Delete(dbPath);
string connectionString = String.Format("DataSource=\"0\";Max Database Size=3000;", dbPath);
SqlCeEngine en = new SqlCeEngine(connectionString);
en.CreateDatabase();
en.Dispose();
return connectionString;
private void CreateTable(SqlCeConnection conn)
using (SqlCeCommand comm = new SqlCeCommand())
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = "CREATE TABLE gnis ([Id] [int] IDENTITY(1,1) PRIMARY KEY, [Name] [nvarchar](110) NOT NULL, [Geometry] [varbinary](429) NOT NULL)";
comm.ExecuteNonQuery();
private void CreateTableIndex(SqlCeConnection conn)
using (SqlCeCommand comm = new SqlCeCommand())
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = "CREATE INDEX IXgnis ON gnis ([Name]);";
comm.ExecuteNonQuery();
private void WriteFeature(SqlCeConnection conn, string name, MultiPoint multiPoint)
byte[] wkb = WkbWriter.WriteWkb(multiPoint);
using (SqlCeCommand comm = new SqlCeCommand())
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = "INSERT INTO gnis ([Name], [Geometry]) VALUES (@a, @b)";
comm.Parameters.AddWithValue("@a", name);
comm.Parameters.AddWithValue("@b", wkb);
comm.ExecuteNonQuery();
【讨论】:
竖起大拇指,她是一个良好的开端,不过我得到了另一个教程,有了这个和那个,我准备好了。 有些变量没有声明,用途不清楚,如果您发布使用的依赖项列表,我将不胜感激。另外,WkbWriter.WriteWkb(multiPoint);
方法和MultiPoint
命名空间的用途是未知的。谢谢
这只是代码 sn-ps.. 不是完整的课程。忽略几何的东西。以上是关于在 WPF 应用程序中连接和使用 SQL Compact Edition的主要内容,如果未能解决你的问题,请参考以下文章
我已经在我的 SQL 数据库和 WPF 应用程序之间创建了一个连接,但我想使用 XML 文件和 XDocument 来连接它们