Muitos amigos estão preocupados com o problema do caminho relativo do banco de dados ACCESS no programa .net, o que os faz ter que modificar o web.config toda vez que movem o programa.
O caminho do banco de dados na cadeia de conexão do banco de dados.
Muitas pessoas escrevem o seguinte em seu web.config:
<configurações do aplicativo>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;
Fonte de dados=E:webApp_DataData.mdb)"></add>
</appSettings>
O programa está escrito assim:
MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]);//Nota: ConfigurationSettings são escritos de forma diferente no VS2005 e VS2003. Verifique você mesmo as diferenças específicas
. como os seguintes são frequentemente solicitados:
'C:WINDOWSsystem32~App_DataData.mdb' não é um caminho válido. Determine se o nome do caminho está escrito corretamente e se você está conectado ao servidor onde o arquivo está armazenado. Fonte de dados=~App_DataData.mdb
Mesmo que o caminho absoluto esteja correto, web.config deve ser modificado ao transplantar o programa, por isso é mais problemático.
Também existem maneiras de usar Server.MapPath como ASP em web.config para obter o caminho do banco de dados, mas web.config não reconhece Server.MapPath, portanto este método não funciona.
Posteriormente, através da exploração e referência a outros programas, concluí o seguinte método, que pode facilmente transplantar o caminho do programa sem ter que modificar o caminho do banco de dados ACCESS.
O que escrevi em web.config é o seguinte:
<appSettings>
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
Na classe de acesso a dados do programa, retirei "SQLConnString" e "dbPath" e os conectei em uma string "CONN_STRING_NON_DTC"
string somente leitura estática pública CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
Este é o método de escrita no VS2005. Defini CONN_STRING_NON_DTC como somente leitura estático para facilidade de uso.
Bom, assim você pode transplantar seu programa à vontade sem se preocupar com o caminho do banco de dados, de uma vez por todas ^_^, adequado para preguiçosos como eu!