所以我现在真的很生气。(还是一个菜鸟)我正在尝试使用我在“登录”表单上的“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
}
答案 0 :(得分:4)
constr
和con
的范围限定为此示例中的方法。如果您希望它们在此之外可用,则需要在字段中存储内容。例如,可能是:
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
状态并不总是最好的做法。它会起作用,但它会在以后给你较少的选择。