尝试从C#连接到SQL Server CE时发生异常

本文关键字:CE 异常 Server SQL 连接 | 更新日期: 2023-09-27 18:14:36

我是一个新手,正在努力学习一些web编程。我正在使用C#在VS 2012中制作我的网站。我在App_Data文件夹中使用SQLServerCE4.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"的异常,但未在用户代码中处理

有没有想过我做错了什么?我已经想了好几个小时了。

尝试从C#连接到SQL Server CE时发生异常

您说过您的数据库在APP_Data目录中,但您的连接字符串假设它在站点的根目录中。

尝试

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

|DataDirectory|是一个占位符字符串,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())
    {
      .....
    }
}

正如你所看到的,我做了这样的改变:

  • 在的连接和的创建过程中添加了using语句命令。这将确保正确关闭和处理这两个对象
  • 添加了参数化查询以避免分析文本字符串时出现问题和Sql注入