更正SqlConnection声明

时间:2012-09-24 17:03:03

标签: c# sql-server-2008 sqlconnection

问题在于我使用SqlConnection作为公共静态连接,认为这可能是导致错误形成时间的问题:

  

*连接未打开或连接已打开

在静态类中使用SqlConnection的一个语句是否可以?

所以我只能宣告一次,我知道我可以在connectionString中使用web.config

ConfigurationManager.ConnectionStrings["conn"].ConnectionString ...

但我希望它与web.config设置或服务器名称无关。

  • ReEdit:

因为它确实是同一类中的两个方法,也是该主类中的另一个类 但这不是重要的,而是为所有人使用相同的连接 执行!所以你说,即使我用我的帮助者类的正确代码编辑 这是错的?

public static class myDBhelper
{
 public static SqlConnection Conn = new SqlConnection ("server=(local);Initial Catalog=dbName;Integrated Security=True");

        public static int ExecSQLint(string TblintSQL)
        {
            int anIntValue=0;
            SqlCommand TblintCMD = new SqlCommand(TblintSQL, Conn);
            try
            {
                Conn.Open();
                anIntValue = Convert.ToInt32(TblintCMD.ExecuteScalar());
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                throw new Exception("No Can Do: " + ex.Message);
            }
            finally
            {
                Conn.Close();
            }
          return anIntValue;
        }



        public static string ExecSQLstring(string TblStrSQL)
        {
          string strValue="";
          SqlCommand TblStrCMD = new SqlCommand(TblStrSQL, Conn);
            try
            {
                Conn.Open();
                strValue = TblStrCMD.ExecuteScalar().ToString();
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                throw new Exception("No Can Do: " + ex.Message);
            }
            finally
            {
                Conn.Close();
            }

            return strValue;
        }


}

我怀疑的主要问题是这两个选项:

SqlConnection Conn = new SqlConnection("Data Source=(local);Integrated Security=True;database=dbName")

在我的DBhelper课程中,我正在使用此声明

SqlConnection Conn = new SqlConnection("server=(local);Initial Catalog=dbName;Integrated Security=True");

可能不稳定或容易出错吗?

p.s。:我正在通过try catch

执行命令
            try
            {
                Conn.Open();
                cmd.ExecuteNonQuery();
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                throw new Exception("No Can Do: " + ex.Message);
            }
            finally
            {
                Conn.Close();
            }

Using声明更合适吗?虽然这不是我的问题,但我在想...如果我已经尝试按照这本书的那样做了......

这些方法实际上是错误吗?

2 个答案:

答案 0 :(得分:0)

using(var conn=new. SqlConnection( "server=(local);Initial Catalog=dbName;Integrated Security=True"))
{
    conn.Open();
}

答案 1 :(得分:-1)

public SqlConnection GetSqlConnection()
{
    SqlConnection sql = new SqlConnection();
    sql.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["SchoolContext"].ToString();
    return sql;
}