使用ODBC在C#中创建Access数据库

时间:2012-08-09 10:23:46

标签: c# winforms windows-7-x64

如何使用C#和ODBC创建MS Access数据库?

1 个答案:

答案 0 :(得分: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驱动程序的情况下预装了AFAIK。