C# 以编程方式连接到 SQL 服务器 CE
Posted
技术标签:
【中文标题】C# 以编程方式连接到 SQL 服务器 CE【英文标题】:C# Connect to a SQL server CE programmatically 【发布时间】:2011-11-02 10:26:51 【问题描述】:我对数据库编程完全陌生。我正在使用 Visual Studio 2010 并希望以编程方式创建数据库。
到目前为止,我已经尝试像这样连接到 SQL Server Compact Edition:
public class HistoryDBAccess
private SqlConnection conn = new SqlConnection();
public HistoryDBAccess()
conn.ConnectionString = @"Server=localhost;Integrated security=SSPI;database=master";
string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
"(NAME = MyDatabase_Data, " +
"FILENAME = 'C:\\MyDatabaseData.mdf', " +
"SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
"LOG ON (NAME = MyDatabase_Log, " +
"FILENAME = 'C:\\MyDatabaseLog.ldf', " +
"SIZE = 1MB, " +
"MAXSIZE = 5MB, " +
"FILEGROWTH = 10%)";
SqlCommand myCommand = new SqlCommand(str, conn);
try
conn.Open();
myCommand.ExecuteNonQuery();
MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
catch (System.Exception ex)
MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
finally
if (conn.State == System.Data.ConnectionState.Open)
conn.Close();
Ctor 中的连接失败,并显示无法建立连接的消息。
使用VS2010的数据库向导很好,但是如何在windows 7下看到SQLCe服务器呢?
它是否在控制面板下方,我需要在连接字符串中输入默认密码吗?
非常感谢,
于尔根
【问题讨论】:
查看这个:***.com/questions/6196274/… 你的连接字符串中没有密码吗? @Piras:非常感谢。这就是我要找的东西,尤其是 SqlCeEngine 对象! 【参考方案1】:我认为您应该使用服务器资源管理器(或数据库资源管理器)在您的项目中添加与数据库的连接,然后检查您的连接字符串。
【讨论】:
【参考方案2】:您似乎试图在打开连接之前传递 con 对象。
所以试试这个并告诉我。
public HistoryDBAccess()
conn.ConnectionString = @"Server=localhost;Integrated security=SSPI;database=master";
string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
"(NAME = MyDatabase_Data, " +
"FILENAME = 'C:\\MyDatabaseData.mdf', " +
"SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
"LOG ON (NAME = MyDatabase_Log, " +
"FILENAME = 'C:\\MyDatabaseLog.ldf', " +
"SIZE = 1MB, " +
"MAXSIZE = 5MB, " +
"FILEGROWTH = 10%)";
conn.Open();
SqlCommand myCommand = new SqlCommand(str, conn);
try
myCommand.ExecuteNonQuery();
MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
catch (System.Exception ex)
MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
finally
if (conn.State == System.Data.ConnectionState.Open)
conn.Close();
【讨论】:
这也不起作用。我猜连接字符串有问题。 @Juergen:它抛出的异常是什么?我们需要错误,我们可以为您解决。我没有 SQL CE。 用户询问 SQL Server Compact @ErikEj,我知道他在询问 SQl CE,您无需将答案标记下来。我告诉他试试。我从来没有说过这是正确的答案..【参考方案3】:创建它后,您可能会想要与它进行交互。您应该考虑使用 NHibernate。它有一个名为 SchemaExport 的功能,可以随意删除和创建数据库。
这是一个使用 SQL Express 的示例,但使用 Compact Edition 并没有太大的不同。您可以通过在 Visual Studio 中打开 NHibernate 并单击 Project > Manage NuGet Packages,然后在 All Online 中搜索 NHibernate 来将 NHibernate 安装到您的项目中。
public class NHContext
protected static Configuration NHConfiguration;
protected static ISessionFactory SessionFactory;
public static void DropDatabase()
new SchemaExport(NHConfiguration).Drop(false, true);
public static void CreateDatabase()
new SchemaExport(NHConfiguration).Create(false, true);
protected static Configuration configureNHibernate()
var configure = new Configuration();
configure.SessionFactoryName("BuildIt");
configure.DataBaseIntegration(db =>
db.Dialect<MsSql2008Dialect>();
db.Driver<Sql2008ClientDriver>();//db.Driver<SqlClientDriver>();
db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
db.IsolationLevel = IsolationLevel.ReadCommitted;
db.ConnectionString = @"Data Source=.\SQLEXPRESS;Persist Security Info=True;Integrated Security=SSPI;Initial Catalog=NHibernate32Test;User Instance=False";
db.Timeout = 10;
// For testing
db.LogFormattedSql = true;
db.LogSqlInConsole = true;
db.AutoCommentSql = true;
);
return configure;
public static void Setup()
NHConfiguration = configureNHibernate();
HbmMapping mapping = getMappings();
NHConfiguration.AddDeserializedMapping(mapping, "NHibernate32Test");
SchemaMetadataUpdater.QuoteTableAndColumns(NHConfiguration);
SessionFactory = NHConfiguration.BuildSessionFactory();
【讨论】:
用户在询问 SQL Server Compact! 是的 - 正如我在回答中所说 - 修改 SqlCE 很简单。以上是关于C# 以编程方式连接到 SQL 服务器 CE的主要内容,如果未能解决你的问题,请参考以下文章
c# winform程序怎么连接到本地sqlserver 数据库啊
无法从 MYSQL Workbench 6.3 CE 连接到 MS SQL 服务器 [重复]