1

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

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”类型的异常,但未在用户代码中处理

关于我做错了什么有什么想法吗?几个小时以来,我一直试图弄清楚这一点。

4

1 回答 1

1

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

尝试

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

|数据目录| 是一个占位符字符串,NET Framework 将其更改为数据文件应该保留的预定义位置

这就是我将如何更改您的代码

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())
    {
      .....
    }
}

如您所见,我进行了以下更改:

于 2013-05-21T20:45:01.367 回答