连接到尚未创建的数据库?

时间:2013-10-07 16:40:27

标签: c# sql-server-ce

如何创建SQL Compact Edition数据库?我试图搞清楚,搜索互联网,我找不到它(但话又说回来,你怎么搜索这个?!)。到目前为止,这是我的代码:

checkPasswordsMatch();
SqlCEConnection myconn = new SqlCEConnection();
SqlCeCommand myCommand = new SqlCeCommand(
    @"CREATE DATABASE ""pwdb.sdf"" DATABASEPASSWORD '" + textBox1.Text + "'");
myCommand.ExecuteNonQuery();

我在连接部分放什么?我不明白。

更新:我决定创建一个数据库以与应用程序合并,只需检查是否有专用于记录主数据的值(管理员密码)。

这是我的新代码:

Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        SqlCeConnection myconn = new SqlCeConnection("Data Source = pwdb.sdf;");
        SqlCeCommand checkpass = new SqlCeCommand("SELECT * from PW WHERE Name = Master;",myconn);
        try
        {
            myconn.Open();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        if (checkpass.ExecuteNonQuery() != null)
        {
            Application.Run(new enterMasterPassword());
        }
        else
            Application.Run(new mainPassSet());

问题是,当我现在执行此操作时,我得到:

  

System.Data.SqlServerCe.dll中出现未处理的“System.Data.SqlServerCe.SqlCeException”类型异常

任何想法?

2 个答案:

答案 0 :(得分:2)

尝试使用SqlCeEngine课程。使用该类,您可以创建一个新数据库:

using (SqlCeEngine engine = new SqlCeEngine())
{
    engine.LocalConnectionString = yourConnectionString;
    engine.CreateDatabase();
}

答案 1 :(得分:0)

由于您可能只想创建数据库,因此您可能不希望在代码中执行此操作。

一些建议:

1)如果您使用的是Visual Studio,则可以打开服务器资源管理器(在菜单View-> Server Explorer下)并在那里创建它。

2)使用其中一个免费的SQL管理器,如linkpad或powershell + sqlcmd(还有其他)

3)或...不知道您正在使用哪种数据模型,但EntityFramework与“code first”将根据您的连接字符串以及您如何命名数据上下文自动为您创建数据库。由于您使用的是sdf标签,也许您正在使用EF ...