首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

读ini文件有关问题-仅仅是读,写可以的-

2012-03-27 
读ini文件问题-仅仅是读,写可以的----急调用api函数类中代码如下:privatestaticexternstringGetPrivatePro

读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 Security=True "
providerName= "System.Data.SqlClient " />
</connectionStrings>


当然我拷贝的我的程序的,是windows身份验证,你的sql server身份验证用你自己的改一下connectionString就好了。
这种方式放到服务器上改一下连接字符串就可以,不要改程序。另外,你还可以把连接字符串绑定到SqlDataSource或SqlDataAdapter之类的,没有必要自己去读。
如果非要自己读取,可以用:
System.Configuration.ConfigurationSettings.AppSettings[ "DbTempConnectionString "];
[解决办法]
api 定义错啦
[DllImport( "kernel32 ")]
private static extern int GetPrivateProfileString(
string lpAppName,
string lpKeyName,
string lpDefault,
StringBuilder lpReturnedString,
int nSize,
string lpFileName
);
[解决办法]
web.config是单独的文件方式存放在网站目录中的,而不管你采用何种部署方式。
比如说,你在IIS中建了一个网站,目录假设是d:\www\yoursite,这就是你网站的内容,那web.config就是d:\www\yoursite\web.config,而你的程序在d:\www\yoursite\bin\yoursite.dll中,这样你改配置的话是不需要改程序的。

热点排行