在命名空间中声明变量是否使其成为全局变量?
本文关键字:全局变量 是否 命名空间 声明 变量 | 更新日期: 2023-09-27 18:05:03
我正在编写一个基于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");
正如其他人所说,"全局"静态类型通常不是最好的设计方法,但要回答您的具体问题:
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();
连接非常轻量级,因此您可以根据需要创建和关闭它们。也许像这样:
using (var conn = new OleDbConnection(connStr))
{
// Use your connection
}
这将在阻塞退出时自动为您关闭连接。
您可能希望将字符串放在全局可访问的位置,例如Config
类。
首先,您不能在命名空间中声明全局的东西。即使有可能,这也不是一个好主意。感谢您为避免代码重复所做的努力,我建议您:
- 在配置中放置连接字符串
- 声明连接并在需要时使用它,可能使用using模式。
您可以创建具有静态成员的静态类。
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...
}
这将在操作完成后关闭连接。但是不要忘记这可能引起的性能问题。