日期:2014-05-19  浏览次数:20431 次

读ini文件问题-仅仅是读,写可以的----急
调用api函数   类中代码如下:  
private   static   extern   string   GetPrivateProfileString(
                        string   lpAppName,
                        string   lpKeyName,
                        string   lpDefault,
                        StringBuilder   lpReturnedString,  
                        int   nSize,
                        string   lpFileName
                );
  public   string   ReadDBini(string   Section,   string   Key,   string   def)
                {
                        StringBuilder   temp   =   new   StringBuilder(1024);
                        GetPrivateProfileString(Section,   Key,   def,temp,1024,filePath);
//此处发生错误,如下:
异常详细信息:   System.AccessViolationException:   尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

                        return   temp.ToString();
                }
在page_load中调用ReadDBini代码如下:
        WRini   DBSet=new   WRini();
        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                int   iSvr,   iDB,   iUser,   iPwd;
                //string   temp;                                
                txtServer.Text   =   DBSet.ReadDBini( "数据库设置 ",   "Server ",   " ");
               
                txtDB.Text   =   DBSet.ReadDBini( "数据库设置 ",   "Database ",   " ");

                txtUser.Text   =   DBSet.ReadDBini( "数据库设置 ",   "User ",   " ");

                txtPwd.Text   =   DBSet.ReadDBini( "数据库设置 ",   "Password ",   " ");
     
        }


------解决方案--------------------
听朋友说web.config里面不可以使用变量。程序一旦写完后,如果要改数据库代码也得重新编译,改源代码,比较麻烦。所以就采用这个方法了。
希望能求得一些帮助!
------------------------------------------

不要听人说,看看书或试一下或看帮助,就知道他说的不对。web.config本来就是为配置准备的,怎么还要改源码和编译。
像连接字符串:
<connectionStrings>
<add name= "DbTempConnectionString " connectionString= "Data Source=localhost;Initial Catalog=DbTemp;Integrated