public int selectNum(string sql)
{
SqlConnection conn = new SqlConnection(str);
conn.Open();
cmd.CommandText = sql;
returnNum = int.Parse(cmd.ExecuteScalar().ToString());
conn.Close();
return returnNum;
}
这样写的的话 我调用方法的时候才创建sqlConnection对象,离开的时候会把这个方法从内存中清除吗?
如果这个方法是静态的那又是什么时候创建的?
因为是新手,语言有可笑的地方见谅.
但sqlConnection比较特别,离开的时候会自动把该连接放到连接池中去。(除非你在连接字符串上显示声明不使用连接池)
静态的话,会在第一次使用的时候创建(只有第一次的时候创建一次),生命周期和整个应用程序一样。
不过sqlConnection不可能使用静态的,我看到很多人的dbhelper类都把sqlConnection做成静态的。这样的话再同时有2个连接的时候就出问题了。
如果是静态变量,会在第一次使用的时候创建一次,生命周期和整个应用程序一样。
sqlConnection我不熟悉。
{
SqlConnection conn = new SqlConnection(str);
conn.Open();
SqlCommand cmd = new SqlCommand(null, conn);
returnNum = int.Parse(cmd.ExecuteScalar().ToString());
conn.Close();
return returnNum;
}
这样调用方法后,如果sqlConnection对象会被清除的话,sqlConnection关没关闭都无所谓吗?
SqlConnection conn = new SqlConnection(str);1.离开方法时, conn在堆栈上,会被释放。而new SqlConnection(str);会在托管堆中,成为垃圾对象,等待着GC回收。
2. 要显示关闭sqlConnection,sqlConnection本身是托管对象,受GC管理,但是它里面引用到了非托管资源,不受GC管理。
但是调用close后连接才会回归连接池,这也是写代码的良好习惯。
{
System.Threading.Thread thread1 = new System.Threading.Thread(delegate()
{
frmMain = new Music_Main();
frmMain.Music_Main_Load();
});
thread1.Start();
}
我调用10次这个方法,如果都执行完了,那么是不是什么都不会留下?