刚换用c++ builder 2009,不大熟悉,加上网上有关这方面的资料也比较少,现有的创建access的mdb数据库的方法都是bcb6的,直接用在c++ builder 2009上会出错。想了两个简单的方法来绕过去,第一种方法是copy法,把一个空的库随程序一起发布,需要创建库的时候直接拷贝一个,改改名字就可以了,这种方法好处是简单,但是也比较笨。另外一个方法是利用bcb创建库的代码创建一个dll,在c++ builder 2009调用这个dll就可以动态生成mdb的库了。创建方法:
1、用bcb6的dll wizard默认创建一个dll
2、cpp代码
extern "C" __declspec(dllexport) int createDb(char* dbFile,unsigned int len);
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
int createDb(char* dbFile,unsigned int len)
{
OleInitialize(NULL);
AnsiString dbName(dbFile,len);
Variant vCreateAccess;
Procedure PCreateAccess("Create");
PCreateAccess << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName;
vCreateAccess = CreateOleObject("ADOX.Catalog");
vCreateAccess.Exec(PCreateAccess );
OleUninitialize();
return 0;
}
头文件
#ifndef H_CREATEDB_H__
#define H_CREATEDB_H__
extern "C" __declspec(dllexport) int createDb(char* dbFile,unsigned int len);
#endif