尝试从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"的异常,但未在用户代码中处理
有没有想过我做错了什么?我已经想了好几个小时了。
您说过您的数据库在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注入