2012-06-17 303 views
1

经过一段时间使用网站,加载内容等。此消息显示“填充:SelectCommand.Connection属性尚未初始化”! 我认为这是因为sql连接,但不知道...我想知道我能做些什么来防止这种情况发生,每次发生这种情况时,我都必须上传一个文件(SQL类,用于连接)和该网站开始再次运作。填充:SelectCommand.Connection属性尚未初始化

我的SQL连接:

public class SQL 
{ 

    SqlCommand comandos; 
    public SqlConnection sql() 
    { 
     string Server = @"server"; 
     string Username = "user"; 
     string Password = "pass"; 
     string Database = "database"; 
     string ConnectionString = "Data Source=" + Server + ";"; 
     ConnectionString += "User ID=" + Username + ";"; 
     ConnectionString += "Password=" + Password + ";"; 
     ConnectionString += "Initial Catalog=" + Database; 

     SqlConnection Connection = new SqlConnection(); 
     try 
     { 
      Connection.ConnectionString = ConnectionString; 
      Connection.Open(); 
      return Connection; 
     } 
     catch (Exception) 
     { 
      if (Connection != null) 
      { 
       Connection.Dispose(); 
     } 
     return null; 
     } 
    } 

    public void FazerComando(string comando) 
    { 
     comandos = new SqlCommand(comando, sql()); 
     comandos.ExecuteNonQuery(); 
    } 

    public DataTable Execute(string comando) 
    { 
     SqlDataAdapter SQLDataAdapter = new SqlDataAdapter(comando, sql()); 
     DataTable dtResult = new DataTable(); 
     SQLDataAdapter.Fill(dtResult); 
     return dtResult; 
    } 
} 

回答

3

这可能与你的问题,但在任何情况下,它的东西,应该解决:你不是你的配置连接时,你与他们做。你应该使用using

public void FazerComando(string comando) 
    { 
     using (var conn = sql()) 
     { 
      comandos = new SqlCommand(comando, conn); 
      comandos.ExecuteNonQuery(); 
     } 
    } 
    public DataTable Execute(string comando) 
    { 
     using (var conn = sql()) 
     { 
      SqlDataAdapter SQLDataAdapter = new SqlDataAdapter(comando, conn); 
      DataTable dtResult = new DataTable(); 
      SQLDataAdapter.Fill(dtResult); 
      return dtResult; 
     } 
    } 
+0

我认为它的工作,我推动网站,它没有崩溃!坦克很多! – Severiano

1

我从来没有采取过这种方法。我们通常只在web config中使用连接字符串,特别是使用linq,它工作得很好。我建议你看看http://blogs.msdn.com/b/visualstudio/archive/2012/06/11/world-of-samples-at-your-fingertips.aspx并追踪。您应该找到一个建议的连接最佳实践的好例子。连接字符串将在应用程序的第一个应用程序中读取,连接池(v imortant)用于最佳效果。

哦,你是不是你的配置连接,这将导致内存韭菜和IIS清除出你的应用程序池当memeory使用过大的 - 所有的V坏

至于其他respondant说,而我正在查找蝙蝠侠链接...

HTH

相关问题