2017-10-11 6 views
1

このメソッドをASP.NetのRazorでAJAXから実行しようとしています。私は目に見えるエラーはありませんが、実行しようとするたびにこれが私に送られます。このような方法が完璧に走っています。しかし、私は何かが足りないと思う。System.Data.dllでSqlExceptionが発生しましたが、ユーザーコードで処理されませんでした

enter image description here

は、これは、あなたのコマンドが設定してはならないプレーンテキストのSQLコマンドである場合は、ストアド・プロシージャを実行したいときは、CommandType.StoredProcedureを使用して、私の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); 
} 
+3

選択コマンドはStoredProcedureではありません。 CommandTypeを設定する行を削除する – Steve

+0

その上に 'SqlConnection'だけでなく' using'を適用し、asp.net mvcでは不要な '[WebMethod]'を削除し、 'departments'を割り当てます手動でJavaScriptSerializerを使用せずに直接(jsonレスポンスの一部だけをシリアライズしていると気にしませんでしたか?) – GSerg

答えて

4

ですこのプロパティはデフォルトがコマンドテキストに適しているため

ところで、致命的なエラーではありませんが、SqlCommandやSqlDataReadeなどの使い捨てオブジェクトの周りにusingステートメントを使用する方が良いr

using (SqlConnection con = new SqlConnection(cs)) 
using (SqlCommand cmd = new SqlCommand(sql, con)) 
{ 
    // cmd.CommandType = CommandType.StoredProcedure; 
    ... 
    using(SqlDataReader rdr = cmd.ExecuteReader()) 
    { 
     .... 
    } 

} 
関連する問題

 関連する問題