读书人

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

发布时间: 2012-03-27 13:44:24 作者: rapoo

读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中,这样你改配置的话是不需要改程序的。

读书人网 >asp.net

热点推荐