尝试从C#连接到SQL Server CE时出现异常

时间:2013-05-21 20:37:31

标签: c# razor visual-studio-2012 sql-server-ce

我是一个试图学习网络编程的新手。我正在使用C#在VS 2012中创建我的网站。我使用SQL Server CE 4.0在App_Data文件夹中连接了一个数据库。我正在尝试按如下方式连接到它:

SqlCeCommand cmd1 = new SqlCeCommand("SELECT Admin FROM SystemUsers WHERE Email=" + user.Email);
SqlCeDataReader admin = null;
SqlCeConnection conn = new SqlCeConnection();
conn.ConnectionString = "Data Source=MyData.sdf;Persist Security Info=False;";
conn.Open();
admin = cmd1.ExecuteReader();

执行此操作时,出现以下错误:

  

System.Data.SqlServerCe.dll中发生了'System.Data.SqlServerCe.SqlCeException'类型的异常,但未在用户代码中处理

关于我做错了什么的想法?我一直试图解决这个问题几个小时。

1 个答案:

答案 0 :(得分:1)

您说您的数据库位于APP_Data目录中,但您的连接字符串假定它位于您网站的根目录中。

尝试

conn.ConnectionString = @"Data Source|DataDirectory|\MyData.sdf;Persist Security Info=False;";

| DataDirectory |是一个占位符字符串,NET Framework将更改为数据文件为supposed to stay

的预定义位置

这就是我改变代码的方式

using(SqlCeConnection conn = new SqlCeConnection(@"Data Source|DataDirectory|\MyData.sdf;Persist Security Info=False;"))
using(SqlCeCommand cmd1 = new SqlCeCommand("SELECT Admin FROM SystemUsers WHERE Email=@mail", conn))
{
    conn.Open();
    cmd1.Parameters.AddWithValue("@mail", user.Email);
    SqlCeDataReader admin = cmd1.ExecuteReader();
    while(admin.Read())
    {
      .....
    }
}

如你所见,我做了这些改变: