我是一个试图学习网络编程的新手。我正在使用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'类型的异常,但未在用户代码中处理
关于我做错了什么的想法?我一直试图解决这个问题几个小时。
答案 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())
{
.....
}
}
如你所见,我做了这些改变: