我是这样想的:
1.写一个类库,发布成DLL,供其他程序引用!
2.类库里有个操作是关于数据库操作的,要用到数据库的物理地址。
3.为了类库的通用性,数据库地址当然不能写死。于是我就新建了一个新的命名空间(比方说MyProject),里面新建一个类(MyPrjSetting),类有个属性(DBConnString),类库里要用到数据库地址的时候就调用 MyProject.MyPrjSetting.DBConnString 就可以了。
4.做其他程序的时候也同样写个MyProject的空间,内容也一样,这样的话,程序和类库要进行数据库操作时用到的数据库地址就一致了。我试着这样做,可能是对C#还不熟悉吧,一直没有办法达到上述功能...
是不是要把MyPrjSetting写成接口呢?因为对于类库来说,数据库的地址实际上是动态联编的。写了这么多,不知道各位看明白我的想法了没有,或者有更好的方法,还望赐教,小弟在此先谢过了!

解决方案 »

  1.   

    数据底层
    m_conOle = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionStrings"]);然后在App.config
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
    <add key="ConnectionStrings"
     value="连接值" />
    </appSettings>
    </configuration>
    --------------------------------
    OK!!
      

  2.   

    同意楼上的,写在阿。copnfig里
      

  3.   

    >> 4.做其他程序的时候也同样写个MyProject的空间,内容也一样,这样的话,程序和类库要进行数据库操作时用到的数据库地址就一致了。搞不明白楼主这句话是什么意思。程序初始化类库中的对象时把连接字符串传过去不就得了吗?程序和类库的名称空间(namespace)也没必要一定相同啊,程序引用类库,两者名称空间可以不同。程序和类库要达到数据库连接字符串一致,其实也没什么嘛。
    运行时指定一下MyProject.MyPrjSetting.DBConnString不就得了吗???也许我还是没搞明白楼主的意思。
      

  4.   

    就按你说的做就可以了, 不用写成接口.你的类中有一个ConnectionStr属性就行,然后在其它的project引入你的类dll,创建一个对象,设置其ConnectionStr属性.
      

  5.   

    也许是我没有说清楚,大家好象,没有明白我的意思!
    我再重新陈述下:1.类库在通过调用 MyProject.CMyPrjSetting.DBConnString ;来获取数据库连接字.不是通过Web.config获得.
    2.类库发布成.DLL供其他程序调用!
    3.新的程序通过调用类库里的方法来实现某些数据库的操作!
    4.新的程序如果在类库里找不到合适的方法,就要再自己重新写,这个时候也通过通过调用MyProject.CMyPrjSetting.DBConnString ;来获取数据库连接字.不是通过Web.config获得.那么问题来了:
    1.类库编译的时候,数据库的地址也被编译到.DLL中了,那么新的程序引用这个库中的方法时,就会提示数据库路径错误.(因为类库里的数据库路径是在编译时就确定了!)2.正因为有这个问题,我就想,假如把CMyPrjSetting这个类写成抽象类,在编译类库的时候,DBConnString 返回的只是一个数据类型,并没有实际的值,只有到新的工程引用这个类库的时候才会被赋值!这样的话,类库中的数据库地址就和新的工程中的数据库地址一致了!可能关键是CMyPrjSetting这个类怎么写...我是这样的:using System;
    using System.Configuration;
    namespace MyProject
    {
    public class CMyPrjSetting{
    public CMyPrjSetting(){
    }
    /// <summary>
    /// 连接数据库,关键就是这里了,return的东西要是虚的,到实际新的工程调用时才被赋值. /// </summary>
    public static  string DatabaseConnectionString{
    get{return ""}
    }
    }
    }
      

  6.   

    呵呵,在VS2003里面,System.Configuration.ConfigurationSettings.AppSettings操作的并不只是web.config。还可以操作你想要的路径下的App.config文件。当然,格式要用标准的格式。你也可以不用这个,自己写个xml文件,在dll中自己解析xml并获取连接字符串。更或者,你可以在程序里序列化连接信息,保存为xml文件,读取时反序列化。
      

  7.   

    public static  string DatabaseConnectionString{
    get{return DatabaseConnectionString;}return 自己就是“虚”的了,呵呵!终于研究出来了,但是又有新问题!当类库编译后,我在新工程里的确可以引用,并且数据库路径也达到了动态获取的效果,但是有个警告,意思就是说重复定义了CMyPrjSetting 这个类,因为我在新工程里把这个类重写了!那么怎么定义这个类才能消除这个警告呢?
      

  8.   

    好像有个 Assembly 的东西...
      

  9.   

    把CMyPrjSetting声明成接口,在用你类库的应用程序中实现这个接口,然后在初始化你的类库时把这个接口的实例传进来就行了,不过还是建议用App.config,方便又实惠~~