我的做法是写一个公共的dll.在这里建立数据库的链接,在程序启动时由主Form把connstring传给dll,以后每个form都来dll中来open链接就行了,当然你也可以把connstring放到ini中,这样方便修改。公共类中CTM_LIB.PublicLib.cs: public bool OpenConnection(string strConnectionString)
{
try
{
gcnnData =new System.Data.OleDb.OleDbConnection(strConnectionString);
gcnnData.Open();

}
catch(System.Exception Err)
{
mstcErrorInfo.Description=Err.Message;
gcnnData.Close();
return false;
}
// finally
// {
// gcnnData.Close();
// }
return true;
}主程序给链接串:
[STAThread]
static void Main() 
{

CTM_LIB.PublicLib mm=new CTM_LIB.PublicLib();

mm.strSystemName="省级专卖管理系统(V1.0)";

//连接数据库
if (!mm.OpenConnection("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=CTM;Data Source=211.5.6.130;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=tongshiwei;Use Encryption for Data=False;Tag with column collation when possible=False"))
{
System.Windows.Forms.MessageBox.Show("数据库连接失败, 程序无法启动    ",mm.strSystemName);
Application.ExitThread();
return;
}

Application.Run(new frmMain());
}各子form的调用 if (CTM_LIB.PublicLib.gcnnData.State != ConnectionState.Open)
{
CTM_LIB.PublicLib.gcnnData.Open();
}

解决方案 »

  1.   

    你用的是oleDb还是SqlConnection,如是oleDb的话用udl文件,是sql的话就用一个配置文件,把连接串写到文件中,可以给用户做一个配置界面,让用户跟改配置.你还可以加密连接串的
      

  2.   

    同意 ruirui521(枫之舞)的方法,而且连接串最好放到注册表加密存储(Windows系统)
      

  3.   

    ruirui521(枫之舞) ,让用户自己设定的方式我想到了,但是怎么让所有的FORM都使用这一设定的连接?能再细点吗?比如:用户设的存在哪?子FORM的连接字符串开发的时候怎么写才能在运行时读用户的设定?
    最好举例,谢谢
      

  4.   

    我的做法,做一个数据处理的基类,包装了连接、错误处理和其他基本操作,其他地方就使用此类或其继承类
    参见:http://www.csdn.net/cnshare/soft/16/16749.shtm