我最近发布了(并且当我确定问题与实际问题无关时立即删除)有关SqlConnection在“ChangeDatabase”范围结束时丢失其数据库信息的问题。例如:
//Other code...
dbConn = new SqlConnection(dbConnBuilder.ConnectionString);
dbConn.Open();
dbConn.ChangeDatabase(currentDatabase);
dbConn.Close();
}
我的问题:
SqlConnection
对象并在需要时打开和关闭它被认为是不好的做法吗?dbConn.Database
不在ChangeDatabase之后记住currentDatabase
(方法不是变量)'超出范围'? (哎呀,我不知道像ChangeDatabase
这样的方法可以知道范围)。我的连接字符串是:
Data Source=server.name.com;Persist Security Info=True;User ID=username;Password=password
谢谢大家,让我知道我是否可以提供更多信息,仍然学习使用S.O。
答案 0 :(得分:5)
调用Close()
会完全破坏对象,因此您不应该在读取任何属性之后。
事实上,甚至应该 一个“之后”,因为你不应该调用Close()
。相反,在using
块中实例化连接,以便它会调用Dispose()
,这与Close()
完全相同,但无论您如何离开,都可以保证这样做块。
答案 1 :(得分:0)
因此,每次需要执行语句时,请确保调用changedatabase: - )