在一个类中,我已经定义了像这样的连接字符串
SqlConnectionStringBuilder objConnectionString = new SqlConnectionStringBuilder();
objConnectionString.DataSource = localServer; ;
objConnectionString.UserID = userName;
objConnectionString.Password = password;
objConnectionString.InitialCatalog = selectedDatabase;
其中local server = txtHost; - DataSource userName = txtUsername; password = txtPassword;
但在我的另一个项目中,我想访问该项目的控件
目前我已经像这样与数据库连接
了 using(var sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]))
但是我想让它直接从另一个项目中使用的文本框中获取值
等待你的建议.....可以做到......
答案 0 :(得分:0)
除非您将实际控件传递给其他项目中的方法,否则您无法做到这一点。
为什么不将先前设置的SqlConnectionStringBuilder
对象传递给被调用的方法?
答案 1 :(得分:0)
在带有文本框的表单中,您需要创建属性以访问表单中的值,例如
public string Server
{
get
{
return this.txtHost.Text;
}
}
您还需要通过引用项目或使用两者之间的共享接口将表单的引用传递给您的其他项目。
在您要构建连接字符串的项目中,您需要某种方式来接收对表单的引用,例如
public void RunMyQuery(MyForm form)
{
var objConnectionString = new SqlConnectionStringBuilder();
objConnectionString.DataSource = form.Server;
}
如果您有时间,请考虑创建一个包含共享接口的新项目,这样您就可以创建一个界面,例如
public interface IConnectionStringPartProvider
{
string Server { get; }
... other parts
}
并在表单上实现此接口
public partial class Form1 : Form, IConnectionStringPartProvider
然后您不需要在逻辑类中引用表单项目,只需让两个项目引用共享项目。
这样,您的查询方法可以替换为
public void RunMyQuery(IConnectionStringPartProvider provider)
{
var objConnectionString = new SqlConnectionStringBuilder();
objConnectionString.DataSource = provider.Server;
}