0

我正在编写一个windows form基于应用程序的应用程序,database我想要declare以下内容,global以便我可以使用vcon.open() 和使用我vcon.close()想要open and close my database的任何形式。请告诉怎么做。

OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=F:\workspace\RDASMS\RDASMS\rdadb.mdb");
4

4 回答 4

1

连接非常轻量级,因此您可以根据需要创建和关闭它们。也许是这样的:

using (var conn = new OleDbConnection(connStr))
{
    // Use your connection
}

当块退出时,这将自动为您关闭连接。

您可能希望将字符串放在全局可访问的位置,例如Config类。

于 2013-03-20T19:11:33.803 回答
0

正如其他人所说,“全局”静态类型通常不是最好的设计方法,但可以回答您的具体问题:

namespace YourApplicationNamespace
{
    public static class MyOleDbConnection
    {
        public static OleDbConnection OleDbConnection;

        public static void Open()
        {
             // Do Something with OleDbConnection.
        }

        public static void Close()
        {
             // Do Something with OleDbConnection.
        }
    }
}

可用作:

MyOleDbConnection.Open();
MyOleDbConnection.Close();
于 2013-03-20T19:15:14.967 回答
0

您可以创建具有静态成员的静态类。

public static MyConnection
{
    public static OleDbConnection Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\workspace\RDASMS\RDASMS\rdadb.mdb");
}

然后你可以像这样访问它:

var vcon = MyConnection.Connection;
vcon.Open();

这样做会为您的程序增加不必要的复杂性。您应该创建一个严格处理数据库访问的类,MyConnection例如上面的示例。您需要添加适当的方法来实际处理访问。在不断打开和关闭文件时,使用 Jet 提供程序会带来显着的性能影响。仅当连接长时间处于不活动状态时才应关闭它。在这种情况下,您应该按照以下方式做更多的事情:

using(var vcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\workspace\RDASMS\RDASMS\rdadb.mdb"))
{
    // Your code here...
}

一旦您的操作完成,这将关闭连接。但不要忘记由此可能引起的性能问题。

于 2013-03-20T19:18:21.970 回答
0

首先,您不能在命名空间中声明全局的东西。即使有可能,这也不是一个好主意。感谢您为避免代码重复所做的努力,我建议您:

  1. 将连接字符串放在配置中。
  2. 声明连接并在需要时使用它,可能使用 using 模式。

关于 2 的一点:我注意到您使用喷气发动机( Access ),这可能会通过按需打开和关闭连接而导致性能下降,或者至少在过去是这样。在任何情况下,请注意,在需要时打开连接并在完成后立即关闭它是在任何其他情况下要遵循的模式。

于 2013-03-20T19:12:14.313 回答