SqlException 发生在 System.Data.dll 但未在用户代码中处理
SqlException occurred in System.Data.dll but was not handled in user code
我正尝试使用 Razor 运行 来自 ASP.Net 中的 AJAX 的此方法。我没有任何可见的错误,但每次我尝试 运行 它都会向我发送此错误。我有一个像 运行ning 这样的方法很完美。但我想我遗漏了什么。
这是我的 C# 方法
[WebMethod]
public JsonResult GetDeparments()
{
string cs = "Data Source=DMX87025;Initial Catalog=DB_PCC;Integrated Security=True";
string sql = "SELECT * FROM[DB_PCC].[dbo].[Departments]";
List<Departments> departaments = new List<Departments>();
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand(sql , con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader rdr = cmd.ExecuteReader(); //unhandled expection here
while (rdr.Read())
{
Departments dep = new Departments();
dep.Id = Convert.ToInt32(rdr["Id"]);
dep.Code = rdr["Code"].ToString();
dep.Description = rdr["Description"].ToString();
departaments.Add(dep);
}
}
JavaScriptSerializer js = new JavaScriptSerializer();
return Json(new { success = true, message = (js.Serialize(departaments)) },
JsonRequestBehavior.AllowGet);
}
当你想执行存储过程时使用CommandType.StoredProcedure,当你的命令是纯文本sql命令时你不应该设置这个属性因为默认是适用于命令文本
顺便说一句,虽然这不是致命错误,但最好在 SqlCommand 和 SqlDataReader 等一次性对象周围使用 using 语句
using (SqlConnection con = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand(sql, con))
{
// cmd.CommandType = CommandType.StoredProcedure;
...
using(SqlDataReader rdr = cmd.ExecuteReader())
{
....
}
}
我正尝试使用 Razor 运行 来自 ASP.Net 中的 AJAX 的此方法。我没有任何可见的错误,但每次我尝试 运行 它都会向我发送此错误。我有一个像 运行ning 这样的方法很完美。但我想我遗漏了什么。
这是我的 C# 方法
[WebMethod]
public JsonResult GetDeparments()
{
string cs = "Data Source=DMX87025;Initial Catalog=DB_PCC;Integrated Security=True";
string sql = "SELECT * FROM[DB_PCC].[dbo].[Departments]";
List<Departments> departaments = new List<Departments>();
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand(sql , con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader rdr = cmd.ExecuteReader(); //unhandled expection here
while (rdr.Read())
{
Departments dep = new Departments();
dep.Id = Convert.ToInt32(rdr["Id"]);
dep.Code = rdr["Code"].ToString();
dep.Description = rdr["Description"].ToString();
departaments.Add(dep);
}
}
JavaScriptSerializer js = new JavaScriptSerializer();
return Json(new { success = true, message = (js.Serialize(departaments)) },
JsonRequestBehavior.AllowGet);
}
当你想执行存储过程时使用CommandType.StoredProcedure,当你的命令是纯文本sql命令时你不应该设置这个属性因为默认是适用于命令文本
顺便说一句,虽然这不是致命错误,但最好在 SqlCommand 和 SqlDataReader 等一次性对象周围使用 using 语句
using (SqlConnection con = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand(sql, con))
{
// cmd.CommandType = CommandType.StoredProcedure;
...
using(SqlDataReader rdr = cmd.ExecuteReader())
{
....
}
}