从类调用连接字符串

时间:2012-11-15 08:06:44

标签: c# visual-studio

所以我现在真的很生气。(还是一个菜鸟)我正在尝试使用我在“登录”表单上的“Common”类中创建的连接字符串,这样我就可以调用“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
}

1 个答案:

答案 0 :(得分:4)

constrcon的范围限定为此示例中的方法。如果您希望它们在此之外可用,则需要在字段中存储内容。例如,可能是:

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状态并不总是最好的做法。它会起作用,但它会在以后给你较少的选择。