在表单之间使用相同的 IDB2 连接

Use the same IDB2 connection between forms

要么这太简单以至于没有人问过它,要么没有多少人尝试这样做,所以我无法在 google 查询中找到任何好的结果。基本上,我的主要形式是创建到 i 系列 (AS400) 大型机的 IDB2 连接:

Connection con = new Connection();
con.Open(connectionString, userName, userPassword, 0);

主窗体可以很好地使用此连接。我有另一个表格显示PC 上内部SQL 数据库中的记录,但是这个表格也需要访问AS400。我加了一个IDB2connection的入口参数,窗体第一次初始化时连接状态是打开的。但是,当我单击窗体上的按钮并进入该新子例程时,连接为空。为了始终保持连接打开,我是否需要将其设置为 public 之类的?我可以将所有代码以这种形式重新打开一个新连接,但它看起来有点笨拙。关于如何在表单之间共享开放连接有什么想法吗?

新表格:

private iDB2Connection conn;

public frmFileDatabase(iDB2Connection conn)
    {
        InitializeComponent();
    }

private void btnUpload_Click(object sender, EventArgs e)
    {
        // conn is null at this point
    }
private iDB2Connection conn;

public frmFileDatabase(iDB2Connection _conn)
    {
        InitializeComponent();
        conn = _conn;
    }

private void btnUpload_Click(object sender, EventArgs e)
    {
        // you can use the connection
    }

您需要将参数分配给您的私有变量, 这可能对你有帮助