Asp.net이 Access 데이터베이스에 연결되면 일반적으로 web.config 구성 파일에 데이터베이스 연결 문자열을 작성합니다. 연결 문자열의 데이터베이스 경로는 절대 경로 형태로만 표현할 수 있는데, 프로그램을 이동하려면 web.config에서 데이터베이스 연결 문자열의 데이터베이스 경로를 수정해야 하는데, 이는 매우 번거로운 일이다. ~/database/test.mdb와 같은 상대경로 형태로 작성하는 경우에도 올바르지 않습니다. 예:
<connectionstrings> <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=~/database/test.mdb" providername="System.Data.OleDb" /> </connectionstrings>
위의 글은 잘못되었습니다.
현재 두 가지 일반적인 솔루션이 있습니다.
1. DataDirectory 키워드 방법을 사용하여
Asp.net 2.0부터 데이터 파일을 구체적으로 저장하는 App_Data 디렉터리가 있습니다. . Access, SQL Server Express, XML 및 기타 데이터 파일을 저장하는 데 사용할 수 있습니다. App_Data 폴더에 Access 데이터베이스 파일을 배치한 다음 DataDirectoty 키워드를 사용하여 경로를 가져올 수 있습니다.
<connectionstrings> <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=|DataDirectory|test.mdb" providername="System.Data.OleDb" /> </connectionstrings>
2. web.config 파일에 두 개의 문자열을 설정합니다.
web.config 파일에 두 개의 문자열을 설정합니다. 하나는 드라이버 문자열이고 다른 하나는 액세스 상대 경로입니다. 데이터베이스 파일. 사용시 Server.MapPath()를 이용하여 절대경로를 구한 후 결합된 연결문자열을 사용할 수 있다.
<connectionStrings> <add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source={0}" providerName="System.Data.OleDb" /> </connectionStrings> <appSettings> <add key="AccessPath" value="~/Database/test.mdb"/> </appSettings>
백그라운드에서 사용시 코드는 다음과 같습니다.
private string GetConnStr() { string connStr = WebConfigurationManager.ConnectionStrings["Access"].ConnectionString; connStr = connStr.Replace("{0}", Server.MapPath(WebConfigurationManager.AppSettings["AccessPath"].ToString())); return connStr; }