2012-08-09 2 views
0

C# 및 ODBC를 사용하여 MS Access 데이터베이스를 만들려면 어떻게해야합니까?ODBC를 사용하여 C#에서 액세스 데이터베이스 만들기

+1

아마도이 방법이 유용 할 수는 없겠지만, 빈 Access 2000, 2003, 2007 데이터베이스를 어셈블리에 임베드 한 것으로 간주하고 필요에 따라 디스크에 쓰는 것을 고려해 보셨습니까? 이 기술을 성공적으로 사용했습니다! – series0ne

답변

1

이에서 심사 : 이 How do I specify the ODBC Access Driver Format when creating the database

I는 다음과 같이 말하고 싶지만 :

enum RequestFlags : int 
{ 
    ODBC_ADD_DSN = 1, 
    ODBC_CONFIG_DSN = 2, 
    ODBC_REMOVE_DSN = 3, 
    ODBC_ADD_SYS_DSN = 4, 
    ODBC_CONFIG_SYS_DSN = 5, 
    ODBC_REMOVE_SYS_DSN = 6, 
    ODBC_REMOVE_DEFAULT_DSN = 7 
} 


[DllImport("ODBCCP32.DLL",CharSet=CharSet.Unicode, SetLastError=true)] 
static extern bool SQLConfigDataSourceW(UInt32 hwndParent , RequestFlags fRequest, string lpszDriver, string lpszAttributes); 

을 주요 방법이 갖는

string strDriverName = "Microsoft Access Driver (*.mdb, *.accdb)"; 
string strAttr = "CREATE_DBV12=c:\access2007.accdb"; 
SQLConfigDataSource(0, RequestFlags.ODBC_ADD_DSN, strDriverName, strAttr); 

경고 : 테스트되지 않은

참고 : pinvoke.net에서 pInvoke 정보를 복사했습니다.
UInt32 hwndParent가 잘못되었으므로 UIntPtr이어야합니다.
이것은 Win64에서 특히 중요합니다. 이는 내가 태그를 볼 때 필요하다고 생각합니다.
그렇다면 0 대신 UIntPtr.Zero를 사용하십시오.하지만 먼저 시도하십시오.

큰 프로젝트를 계획하고 있다면 새 프로젝트에 대한 액세스 데이터베이스를 사용하지 않을 것입니다. 독립형 데이터베이스가 필요한 경우 Firebird를 대신 사용하십시오. 그런 식으로 나중에 많은 문제를 해결할 수 있습니다.

또한 최신 64 비트 버전의 Windows에는 Access-driver가 사전 설치되어 있지 않은 AFAIK가 제공됩니다.