遇到困难了。

傻乐tao 2001-08-29 04:31:06
弟兄们谁有 动态生成ODBC 的DEMO 给我一个吧。最好是写注册表的。我在CSDN上找的一个例子编译通不过 。

我要的是动态生成一个ACCESS的ODBC数据源。问题解决保证给100分。
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻乐tao 2001-08-30
  • 打赏
  • 举报
回复
可以了
if (Registry->OpenKey("Software\\ODBC\\ODBC.INI\ODBC Data Sources",FALSE)

少了一个 反斜 杠。

唉,苦苦地找了一个上午啊。还是自己太粗心了。
现在这段代码可以动态生成一个 ODBC 的DSN 了
傻乐tao 2001-08-30
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{

AnsiString AccessDll;
AnsiString S;
TRegistry *Registry = new TRegistry;
try
{
Registry->RootKey = HKEY_LOCAL_MACHINE;
if(Registry->OpenKey("Software\\ODBC\\ODBCINST.INI\\ODBC Drivers",false))
{
S = Registry->ReadString("Microsoft Access Driver (*.mdb)");
if( S != AnsiString("Installed"))
{
MessageBox(Application->Handle,"The system isn't install the Access driver."," Warning",MB_ICONWARNING);
return;
}
else
{
MessageBox(Application->Handle,"This system have already installed the access driver.","Information",MB_ICONINFORMATION);
}

}
else
{
MessageBox(Application->Handle,"The Read odbcinst.ini\odbc driver error.","Warning",MB_ICONWARNING);
}

Registry->CloseKey();
Registry->RootKey = HKEY_LOCAL_MACHINE;

if(Registry->OpenKey("Software\\ODBC\\ODBCINST.INI\\Microsoft Access Driver (*.mdb)",false))
{

AccessDll = Registry->ReadString("Driver");
}
else
{
MessageBox(Application->Handle,"Read the ODBC\ODBCINST.INI\ Microsoft AccessDriver Error.","Warning.",MB_ICONWARNING);

}


Registry->CloseKey();
Registry->RootKey = HKEY_CURRENT_USER;

if (Registry->OpenKey("Software\\ODBC\\ODBC.INI\ODBC Data Sources",FALSE))
{

Registry->WriteString("MyAccessTest","Driver do Microsoft Access (*.mdb)");
AnsiString s ;
s = Registry->ReadString("MyAccessDSN");
}
else
{
ShowMessage("Create the MyAccess Error");
}

Registry->CloseKey();
Registry->RootKey = HKEY_CURRENT_USER;

if( Registry->OpenKey("Software\\ODBC\\ODBC.INI\\MyAccessTest",TRUE))
{
Registry->WriteString("DBQ","E:\\TAO\\Test_bcb\\ODBC\\test.mdb");
Registry->WriteString("Drscription","");
Registry->WriteString("Driver",AccessDll);
Registry->WriteInteger("DriverID",0x00000019);
Registry->WriteString("FIL","MS Access;");
Registry->WriteInteger("SafeTransactions",0x0000000);
Registry->WriteString("UID","");

if( Registry->OpenKey("Engines\\Jet",TRUE))
{
Registry->WriteString("ImplicitCommitSync","");
Registry->WriteInteger("MaxBufferSize",0x00000800);
Registry->WriteInteger("PageTimeout",0x00000005);
Registry->WriteInteger("Threads",0x0000003);
Registry->WriteString("UserCommitSync","Yes");
}
else
{
ShowMessage("Safeware\ODBC\MyAccessDSNtest\Engines\Jet Error");
}
}
else
{
ShowMessage("Create the data source error.");
}


}
__finally
{
delete Registry;
}


}
//---------------------------------------------------------------------------



为什么这段代码中的 写MyAccessTest 值写不进去。唉,这几天真衰。
其实这个注册码可以完成一个DSN的注册,可为什么 MyAccessTest就是写不进去呢?

再帮我看一下吧!
TR@SOE 2001-08-30
  • 打赏
  • 举报
回复
如何动态生成ODBC的DSN我从来没有用过,我一般是用BDE或ADO。
傻乐tao 2001-08-29
  • 打赏
  • 举报
回复
继续up
傻乐tao 2001-08-29
  • 打赏
  • 举报
回复
up
傻乐tao 2001-08-29
  • 打赏
  • 举报
回复
这个不是的,我是想动态绑定ODBC 数据源

为什么http://www.csdn.net/develop/library/other/CBuilder/8541.shtm
的 coff2omf odbccp32.lib 命令行有错。
whitelion 2001-08-29
  • 打赏
  • 举报
回复
up
Dogface 2001-08-29
  • 打赏
  • 举报
回复
不知道这是不是你要的

DataSource->Text =GetCurrentDir()+"\\MastDbs.mdb"; //取得MDB的存放路径
const String ConnStr = "Provider=%s;Data Provider=%s;Data Source=%s"; //连接串的参数形式
try
{
if (!ADODate->ADOCon->Connected)
{
ADODate->ADOCon->ConnectionString = Format (ConnStr, ARRAYOFCONST(((String)Provider->Text,
(String)DataProvider->Text, (String)DataSource->Text)));//连接串
ADODate->ADOCon->Connected =true; //连接数据库
}
}
catch (Exception &exception)
{
ShowMessage("数据库连接错误,确定退出程序!");
FrmMain->Close();
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧