0

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

4

1 回答 1

1

由此判断: 创建数据库时如何指定ODBC访问驱动格式

我会这样说:

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。

于 2012-08-09T10:59:50.870 回答