1

所以我现在真的很生气。(仍然是菜鸟)我正在尝试使用我在“登录”表单上的“通用”类中创建的连接字符串,以便我可以调用“hhrcv_logon_validation”程序。

我的问题是如何?

我到处搜索,是的,我确实得到了例子,但我需要有人为我更好地解释它们吗?也许还有一些示例代码。

我知道我必须为连接字符串创建类并使用该连接字符串来调用 proc?我对吗?

这是我的代码:

using System;
using System.Collections.Generic;
using System.Text;
using CoreLab.Oracle;

namespace WMS
{
    class Common
    {
        static void connect()
        {
            // Connect
            string constr = "User ID=Password;" +
            "Password=Username;" +
            "Host="ServerName";" +
            "Pooling=true;" +
            "Min Pool Size=0;" +
            "Max Pool Size=100;" +
            "Connection Lifetime=0";
            OracleConnection con = new OracleConnection(constr);
            con.Open();
     }
}

请帮忙!?


所以下面是我对你的示例代码所做的:

namespace WMS
{
class Common
{
    public static string ConnectionString
    {
        get
        {
            return ConnectionString;
        }
        set
        {
            ConnectionString = "User ID=username;" +
            "Password=password;" +
            "Host=hostname;" +
            "Pooling=true;" +
            "Min Pool Size=0;" +
            "Max Pool Size=100;" +
            "Connection Lifetime=0";
        }
    }

    public static OracleConnection OpenConnection()
    {
        OracleConnection con = new OracleConnection(ConnectionString);
        con.Open();
        return con;
    }
 }
} 

这行得通吗?

然后我将如何从表单中访问它?有了这个:

<using(var conn = Common.OpenConnection()) {
 // use it
}
4

1 回答 1

4

constr并且con范围仅限于本示例中的方法。如果您希望它们在此之外可用,则需要在field中存储一些东西。例如,也许是这样的:

class Common
{
    private string connectionString;
    public static string ConnectionString {
        get { return connectionString; }
        set { connectionString = value; }
    }
    public static DbConnection OpenConnection()
    {
        OracleConnection con = new OracleConnection(ConnectionString);
        con.Open();
        return con;
    }
}

因此,您将在应用程序早期的某个时间点配置连接字符串:

Common.ConnectionString = ... // TODO

然后当您需要数据访问时:

using(var conn = Common.OpenConnection()) {
     // use it
}

我还应该指出,static状态并不总是做事的最佳方式。它会起作用,但它会在以后给你更少的选择。

于 2012-11-15T08:13:45.460 回答