为什么SqlConnection会忘记数据库类型

时间:2010-10-25 20:00:02

标签: c# .net sqlconnection

我最近发布了(并且当我确定问题与实际问题无关时立即删除)有关SqlConnection在“ChangeDatabase”范围结束时丢失其数据库信息的问题。例如:

    //Other code...
    dbConn = new SqlConnection(dbConnBuilder.ConnectionString);
    dbConn.Open();
    dbConn.ChangeDatabase(currentDatabase);
    dbConn.Close();
}

我的问题:

  1. 当你只需要一个给定类型的连接时,保持SqlConnection对象并在需要时打开和关闭它被认为是不好的做法吗?
  2. 为什么dbConn.Database 在ChangeDatabase之后记住currentDatabase方法不是变量)'超出范围'? (哎呀,我不知道像ChangeDatabase这样的方法可以知道范围)。
  3. 我的连接字符串是:

    Data Source=server.name.com;Persist Security Info=True;User ID=username;Password=password
    

    谢谢大家,让我知道我是否可以提供更多信息,仍然学习使用S.O。

2 个答案:

答案 0 :(得分:5)

调用Close()会完全破坏对象,因此您不应该在读取任何属性之后。

事实上,甚至应该 一个“之后”,因为你不应该调用Close()。相反,在using块中实例化连接,以便它会调用Dispose(),这与Close()完全相同,但无论您如何离开,都可以保证这样做块。

答案 1 :(得分:0)

因此,每次需要执行语句时,请确保调用changedatabase: - )