解决了c#捕获sql错误号的问题和将sql连接用application放在global中作全局变量问题

 解决了c#捕获sql错误号的问题和将sql连接用application放在global中作全局变 量问题

一、获取sql错误号

try
   {
    row = CmdObj.ExecuteNonQuery(); //执行sql语句
   }
   catch(SqlException e)
   {
    switch(e.Errors[0].Number)
    {
     case 547:
      page.Response.Write ( "<p><b>数据库中还没有建立这 </b><br>");
      return -1;
     case 2627:
      page.Response.Write ( "<p><b>中已经存在这一 </b><br>");
      return 0;
     default:
      page.Response.Write ( "<p><b>操作数据库出现其他错误! </b><br>");
      return -2;
    }

 发现一个捕获异常的技巧,有时不知道会发生具体哪种类型异常,可以将 catch的异常类型暂时设为Exception,
再利用Exception的GetType()函数输 出异常类型,这个类型就是具体的异常类型了.

二、 application存储web全局变量

//建立全局的连接对象

//在gloabal文件中

protected void Application_Start(Object sender, EventArgs e)
  {
   EntryFilePath = Server.MapPath ("Entries");

   //建立全局的连接对象
   Application["Con"] = new SqlConnection ("Data Source=Localhost;Initial Catalog=databasename;User ID=xxxxx;Pwd=");
  }

使用全局连接变量

String SqlCmd = "SELECT * FROM BookChapter WHERE (bookID = @bookID AND ChapterID = @chapterID)";

   //page.Application["Con"]是global里建立 的全局的连接对象,必须强制类型转换为SqlConnection类型
   SqlCommand CmdObj = new SqlCommand(SqlCmd, (SqlConnection)(Application["Con"]));
   ((SqlConnection)(Application["Con"])).Open();//注意括号的使用

 

你可能感兴趣的:(sql,exception,数据库,object,C#,application)