레거시 소프트웨어와의 호환성을 위해 Access 97 또는 이전 버전과 호환되는 .mdb 데이터베이스를 만들어야합니다. Access를 설치할 수 없기 때문에 OLEDB를 사용할 수 없습니다. 또한 Office Connectivity 구성 요소를 설치하지 않으려합니다.Access 9733 데이터베이스에 대한 액세스없이 종속성 만들기
이를 수행 할 수있는 제 3 자 라이브러리가 있습니까?
레거시 소프트웨어와의 호환성을 위해 Access 97 또는 이전 버전과 호환되는 .mdb 데이터베이스를 만들어야합니다. Access를 설치할 수 없기 때문에 OLEDB를 사용할 수 없습니다. 또한 Office Connectivity 구성 요소를 설치하지 않으려합니다.Access 9733 데이터베이스에 대한 액세스없이 종속성 만들기
이를 수행 할 수있는 제 3 자 라이브러리가 있습니까?
Jet 엔진이 Windows의 일부가 되었기 때문에 (Windows 2000을 MDAC 구성 요소로 사용하기 때문에) .mdb
파일을 만들려면 Access 설치가 필요하지 않습니다.
최신 .accdb
파일 (Access 2007 이상과 호환 가능)을 만들 계획 인 경우에만 ACE 드라이버를 설치해야합니다.
.mdb
데이터베이스를 만들려면 Microsoft ADO Ext. DDL 및 보안 용으로는 2.8입니다. 라이브러리 Interop.ADOX.dll
.
당신은 당신이 버전은 컴퓨터로 볼 수 있습니다 어떤에서 개체 작성하는 후기 바인딩을 사용 할 수 있습니다, 직접 VS 프로젝트에서 참조 할 필요가 없습니다 :
이void Main()
{
var conStr = GetConnectionString(@"C:\Users\user\Desktop\myDatabase.mdb", null, null);
CreateDb(conStr);
}
//[System.Security.SecuritySafeCritical]
public void CreateDb(string connectionString) {
Type adoxType = Type.GetTypeFromProgID("ADOX.Catalog");
object o = Activator.CreateInstance(adoxType);
o.GetType().InvokeMember("Create", BindingFlags.InvokeMethod, null, o, new object[] { connectionString });
object connection = o.GetType().InvokeMember("ActiveConnection", BindingFlags.GetProperty, null, o, null);
if(connection != null)
connection.GetType().InvokeMember("Close", BindingFlags.InvokeMethod, null, connection, null);
}
public static string GetConnectionString(string database, string userid, string password) {
return String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Mode=Share Deny None;data source={0};user id={1};{3}password={2};",
database, userid, password, string.IsNullOrEmpty(password) ? string.Empty : "Jet OLEDB:Database ");
}
당신은을 테스트 LINQpad을 사용할 수 있습니다 코드, 그것은 내 컴퓨터에서 작동합니다.
파일을 열 수 없습니다 Microsoft Jet 데이터베이스 엔진 'C : 당신은 당신이 파일을 만들 수있는 권한이없는 폴더 데이터베이스를 만들려고하면, 당신은 같은 관련없는 COM 예외를 얻을 것이다 주 : \ myDatabase.mdb '를 입력하십시오. 이미 다른 사용자가 독점적으로 열었거나 해당 데이터를 볼 수있는 권한이 필요합니다. 등 테이블과 인덱스를 만들려면
, 당신은 Access' DDL language을 사용할 수 있으며 단순히으로 빈 데이터베이스를 제공하는 모든 코드를 피할 수 command.ExecuteNonQuery("CREATE TABLE Staff (FirstName CHAR, LastName CHAR)");
또 다른, 아마도 간단한 해결책처럼, 인 OleDB 통해 이러한 명령을 실행 귀하의 애플 리케이션과 그냥 새로운 데이터베이스가 필요할 때마다 그 중 하나를 복사하십시오.
데이터베이스를 열려면 평상시처럼 OldDb를 사용할 수 있습니다.
주의 사항 : 앱을 x86으로 명시 적으로 설정해야합니다. AnyCPU를 사용하면 32 비트 COM 구성 요소에 액세스하기 때문에 64 비트 시스템에서 문제가 발생할 수 있습니다.
기타 참조 :
(http://www.microsoft.com/en-ie/download/details .aspx? id = 13255), 무료입니다. 거기에서 원하는 버전을 만들 수 있습니다 (http://msdn.microsoft.com/en-us/library/office/ff835033(v=office.15).aspx) – Fionnuala
고마워요,하지만 그걸 만들 수 있어요 v3.0 이상 유형의 데이터베이스에 액세스하십시오. .CreateDatabase 호출에서 DatabaseTypeEnum.dbVersion30을 지정하면 작동합니다. 그러나 더 낮은 버전 (dbVersion20)에서는 "설치 가능한 ISAM을 찾을 수 없습니다"와 함께 호출이 실패합니다. 버전 2.0 또는 1.1 데이터베이스를 만들고 싶습니다. – LTR
Deary me, 작동하는데 익숙하다는 것을 기억합니다. Jet 엔진으로이 작업을 수행 할 수 있다고 확신합니다. 2010 버전 1 또는 2로 돌아가는 것이 너무 먼 단계 일 수 있습니다. 운영 체제에 따라 Jet 엔진이있을 수 있습니다. 64 비트를 사용하면 더 복잡해집니다. – Fionnuala