2013-03-20 71 views
-1

我写一个使用database和 我想declare以下为global,这样我可以只使用vcon.open()vcon.close()open and close my database从以往的形式,我想一个windows form基础的应用。请告诉如何去做。不声明命名空间的变量使得全球

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

你不能在名称空间中声明全局的东西。 – 2013-03-20 19:08:10

+1

取而代之的是,您可以创建“连接类”并在全球范围内使用它... – Sachin 2013-03-20 19:10:20

回答

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(); 
+0

非常感谢您的回答....... – 2013-03-20 20:04:01

1

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

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

这会在块退出时自动关闭连接。

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

0

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

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

点约2:我注意到你用喷气发动机(访问),这可以通过打开和关闭按需连接,或者至少是因为这在过去导致性能缺陷。在任何情况下,请注意,在需要时打开连接并尽快关闭它,这是任何其他情况下的模式。

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... 
} 

一旦你的操作都完成后,将会关闭连接。但不要忘记可能由此产生的性能问题。