思路:在设计程序时新加一个“设置文件”在时面放一个数据库连接字符串,程序里所有连接字符串都用这个字符串。这样在程序里设计是很方面的,但我花了两天时间也没有找到怎么让用户修改这个设置文件的方法,请各位老大帮忙想想办法。或者有取代的方法也行。

解决方案 »

  1.   

    对如把访问级放到Application的话,那么通过现成的方法,没有办法,刚接触2005时我也遇到了和你一样的问题,但后来看MSDN说了,这是做不到的,而且你就算Save了,甚至不给保存时的出错消息系统都不会提供,不过,也可自己改App.Config文件,不过不知道这个文件工作时,框架会不会采取这某种措施,所以我也没去试验在程序运行时动态改App.Config是不是有什么问题,所以用.Net快5年了,我一直用注册表保存设置信息,属于全局的,就放在LocalMachine中,属于用户的,放到User中,感觉这样还是方便些
      

  2.   

    如果安全性要求不高的,应该可以通过XML文件进行存储和读取。
      

  3.   

    用App.config文件就可以完成楼主所需要的功能
    在App.config中添加如下字段
    <appSettings>
        <!-- 映射的数据库连接字符串 -->
        <add key="MappingConnectionString" value="Server=127.0.0.1;User ID=sa;Password=;Initial Catalog=YHong_2006"/>
      </appSettings >
    在程序中可以如下调用:
    private string connectionString = ConfigurationSettings.AppSettings["MappingConnectionString"];
      

  4.   

    看来只有用XML文件或注册表或ini文件等老办法解决新问题了。
      

  5.   

    那就不用app.config,自己定义一个配置类,然后序列化成xml保存,使用的时候再反序列化回来,我现在就是这么做的,超级方便
      

  6.   

    在一个安装部署的文档中有修改web.config方法,你可以参考一下!网站安装好后,需要设置web.config文件,这里只涉及到连接字符串到设置,其他的可以同理修改。
            #region WriteWebConfig 修改web.config的连接数据库的字符串
            private bool WriteWebConfig()
            {
                System.IO.FileInfo FileInfo = new System.IO.FileInfo(this.Context.Parameters["targetdir"] + "/web.config");
                if (!FileInfo.Exists)
                {
                    throw new InstallException("Missing config file :" + this.Context.Parameters["targetdir"] + "/web.config");
                }
     
                System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
                xmlDocument.Load(FileInfo.FullName);
     
                bool FoundIt = false;
                foreach (System.Xml.XmlNode Node in xmlDocument["configuration"]["appSettings"])
                {
                    if (Node.Name == "add")
                    {
                        if (Node.Attributes.GetNamedItem("key").Value == "ConnectionString")
                        {
                            Node.Attributes.GetNamedItem("value").Value = String.Format("Persist Security Info=False;Data Source={0};database={1};User ID={2};Password={3};Packet Size=4096;Pooling=true;Max Pool Size=100;Min Pool Size=1", ServerName, DBName, AdminName, AdminPwd);
                            FoundIt = true;
                        }
                    }
                }
     
                if (!FoundIt)
                {
                    throw new InstallException("Error when writing the config file: web.config");
                }
     
                xmlDocument.Save(FileInfo.FullName);
                return FoundIt;
            }
            #endregion
      

  7.   

    05中完全可以用XXX.exe.config文件保存你的接续信息
    可以自己制作工具进行修改。应针对XXX.exe.config进行处理。而不是App.config
    我在现在的项目中就负责这个模块,还有相应工具的制作。所以说完全可以阿
    并且要把接续信息加密。
      

  8.   

    ADO部分重写,来和你的接续信息完全吻合。并自适应数据库类型。
    你读出接续信息后放到自己项目的参量中
    ADO层直接读取它。这样就连结起来了。不知道大家公司的框架都是什么套路。能介绍下吗???
      

  9.   

    我目前的想法就是和mikebai(麦克白)一样的,自己写个更改XXX.exe.config的工具,这样对于单个程序来说是很方便的,但对于一个电脑上安装几个自己公司的程序,这种做法是不好的,你不会让客户改完一个XXX.exe.config配置文件还要去改另外几个配置文件吧,那不累死才怪,目前做软件一般都不会只做一个程序,给一家企业做肯定是好多个程序,这样大家能接受的也就会只有一个公用的配置文件,比如医院his里网管员电脑里的HIS可能会有20-30个程序这么多,像刚才的改XXX.exe.config就得改20-30个,网管只会说一句话:“吾命休也”。
      

  10.   

    晕了。配置文件有那么多要改的?
    MS的 Enterprise Library Configuration也就是这么做的。
    再说既然N个配置文件要改,他们之间没有联系?
    那就要看你设计的时候怎么样提高效率了。
    呵呵。
    你文件多了。还想就一个配置文件。还说有那么多段信息要存。还想点几下就可以了?
    晕。
    有啥好的方法记得一定要告诉我啊。。
      

  11.   

    做数据库应用程序,数据库连接是一个最基本的东西,但也是最重要的一个东西:
    1:公用性:公司所有数据库产品都要能获取同一个连接字符串。
    2:安全性(相对安全):不能让用户轻易知道连接字符串的内容。
    3:简单性:对于程序设置时要很简单的访问,一般要求在程序里可视化设计,比如:在程序里通过工具栏里拖一个SqlConnection 他的ConnectionString要能在属性里直接选,而不是通过代码来访问,因为代码里要获取任何值都是轻而易举的。
    新手学.net,请勿见笑,各位老大帮帮忙,提供一些思路。