2012-08-09 98 views
0

如何使用C#和ODBC創建MS Access數據庫?使用ODBC在C#中創建Access數據庫

+1

我知道這可能不是要走的路,但你有沒有考慮將空白的Access 2000,2003,2007數據庫嵌入到你的程序集中,並根據需要將它們寫入磁盤?我已經成功地使用了這種技術! – series0ne 2012-08-09 12:01:11

回答

1

由此看來: How do I specify the ODBC Access Driver Format when creating the database

我會這樣說:

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尤其重要,我認爲在查看代碼時需要這些。
如果是這樣,請使用UIntPtr.Zero而不是0.但首先嚐試。

另外請注意,如果他們的目標是很大,我不會使用新項目的訪問數據庫。如果你需要一個獨立的數據庫,改用嵌入Firebird。這樣你可以在以後節省很多麻煩。

另請注意,較新的64位版本的Windows無需安裝Access-driver預安裝AFAIK。

相關問題