填充:选择命令.连接属性尚未初始化
本文关键字:初始化 属性 连接 选择 命令 填充 | 更新日期: 2023-09-27 18:37:24
使用网站一段时间后,加载内容等,此消息显示"填充:选择命令.连接属性尚未初始化"!我认为这是因为sql连接,但不确定...我想知道我能做些什么来防止这种情况,每次发生这种情况时,我都必须上传一个文件(建立连接的 SQL 类),网站再次开始工作。
我的 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;
}
}
这可能与您的问题有关,但无论如何,这是应该解决的问题:当您完成连接时,您不会处理它们。 您应该使用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;
}
}
我以前从未采用过这种方法。我们通常只在 web 配置中使用连接字符串,特别是使用 linq,它运行良好。我建议你看看 http://blogs.msdn.com/b/visualstudio/archive/2012/06/11/world-of-samples-at-your-fingertips.aspx 并沿着小径走。您应该找到推荐的连接最佳实践的良好示例。然后,将在应用的第一个位置读取连接字符串,并使用连接池(v imortant)以获得最佳效果。
哦,你没有处理你的连接,这将导致内存韭菜和 IIS 在模因使用量变得太大时清除你的应用程序池 - 一切都不好
正如另一位受访者在我查找 baet prac 链接时所说......
呵呵