急用??? 我想用代码实现动态连接ODBC,不在控制面板的数据源ODBC上配置,请问怎么办? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果驱动本身都存在的话,基本上就是操作注册表,你可以参看注册表里面ODBC的键值 我想连接access数据库,怎么做? adobde 两种控件直接用相对路径 用connectstringbde指定文件夹 然后直接指定数据库文件名就行dirvername:= 路径databasename:=数据名就行了 if ADOQuery1.Active =true then ADOQuery1.Active :=false; ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\数据库.mdb;Persist Security Info=False'; ADOQuery1.SQL.Text :='select * from 表'; aDOQuery1.Active:=true; adoquery1.ExecSQL;adotable 相同只用设置 tabalename:='表名' 请问 yq3woaini(哈哈镜(初级代码工)(★★★)) ,能把代码发给我么,用bde方法 刚才写错了 Table1.DatabaseName := 路径 extractfilepath(tablename); Table1.TableName := 表名 Table1.DatabaseName :=extractfilepath(E:\111\db1.mdb); Table1.TableName :=user //user为表名,这样对么 程序通过BDE连接ACCESS数据库,最好不要直接连接,建立一个针对该ACCESS数据库的ODBC数据源,然后BDE通过ODBE连到数据库,直接连总出错,为什么,我也不明白。ADO是Microsoft的东西,Inprise能让它好用吗。ACCESS设立密码后,只需给TDatabase的密码参数赋值,用户不用管。 Database1->Params->Values["PASSWORD"]="mypassword";创建数据源:bool __fastcall TThreadLoad::createdatasource(){ //此函数用来创建供bde使用的odbc数据源来连接数据库 TRegistry *reg = new TRegistry; try { reg->RootKey=HKEY_LOCAL_MACHINE; //创建驱动程序 if(!reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\Microsoft Access Driver (*.mdb)",false)) { Application->MessageBox("请安装MicroSoft Access驱动程序","提示",MB_OK); } reg->CloseKey(); /* reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\Microsoft Access Driver (*.mdb)",true); reg->WriteInteger("UsageCount",2); char p[100]; String path1; GetSystemDirectory(p,100); String path(p); path=path+"\\odbcjt32.dll"; reg->WriteString("Driver",path); reg->WriteString("Setup",path); reg->WriteString("APILevel","1"); reg->WriteString("ConnectFunctions","YYN"); reg->WriteString("DriverODBCVer","02.50"); reg->WriteString("DSN","MS Access 97 Database"); reg->WriteString("FileExtns","*.mdb"); reg->WriteString("FileUsage","2"); reg->WriteString("SQLLevel","0"); reg->WriteString("UID","Admin"); reg->CloseKey(); reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers",true); reg->WriteString("Microsoft Access Driver (*.mdb)","Installed"); //创建odbc驱动文件列表信息 reg->CloseKey(); reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Core",true); reg->WriteInteger("UsageCount",3); reg->CloseKey(); reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Core\\FileList",true); char pchar[100]; GetSystemDirectory(pchar,100); String path2(pchar); reg->WriteString("ODBC16GT.DLL",path2+"\\ODBC16GT.DLL"); reg->WriteString("ODBC32GT.DLL",path2+"\\ODBC32GT.DLL"); reg->WriteString("ODBC32.DLL",path2+"\\ODBC32.DLL"); reg->WriteString("ODBCCP32.DLL",path2+"\\ODBCCP32.DLL"); reg->WriteString("ODBCCR32.DLL",path2+"\\ODBCCR32.DLL"); reg->WriteString("ODBCINT.DLL",path2+"\\ODBCINT.DLL"); reg->WriteString("ODBCTRAC.DLL",path2+"\\ODBCTRAC.DLL"); reg->WriteString("ODBCAD32.EXE",path2+"\\ODBCAD32.EXE"); reg->WriteString("ODBCCP32.CPL",path2+"\\ODBCCP32.CPL"); reg->WriteString("ODBCINST.HLP",path2+"\\ODBCINST.HLP"); reg->WriteString("ODBCINST.CNT",path2+"\\ODBCINST.CNT"); reg->WriteString("DS16GT.DLL",path2+"\\ODBC16GT.DLL"); reg->WriteString("DS32GT.DLL",path2+"\\ODBC32GT.DLL"); reg->CloseKey(); reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\MS Code Page Translator",true); reg->WriteString("Translator",path2+"\\MSCPXL32.DLL"); reg->WriteString("Setup",path2+"\\MSCPXL32.DLL"); reg->WriteInteger("UsageCount",3); reg->CloseKey(); reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\MS Code Page Translator\\FileList",true); reg->WriteString("MSCPXL32.DLL",path2+"\\MSCPXL32.DLL"); reg->WriteString("12520437.CPX",path2+"\\12520437.CPX"); reg->WriteString("12520850.CPX",path2+"\\12520850.CPX"); reg->CloseKey(); reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Translators",true); reg->WriteString("MS Code Page Translator","Installed"); //存在就返回 reg->CloseKey(); */ reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\MyODBC",true); String systempath; reg->CloseKey(); reg->OpenKey("SOFTWARE\\odbc\\odbcinst.ini\\Microsoft Access Driver (*.mdb)",true); systempath=reg->ReadString("Driver"); String programpath=ExtractFilePath(Application->ExeName); //创建数据源 reg->CloseKey(); reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\MyODBC",true); reg->WriteString("Driver",systempath); reg->WriteString("DBQ",programpath+"EzDoc.mdb"); reg->WriteInteger("DriverId",25); reg->WriteString("FIL","MS Access;"); reg->WriteInteger("SafeTransactions",0); reg->WriteString("UID",""); reg->CloseKey(); reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\MyODBC\\Engines\\Jet",true); reg->WriteString("ImplicitCommitSync",""); reg->WriteInteger("MaxBufferSize",2048); reg->WriteInteger("PageTimeout",5); reg->WriteInteger("Threads",3); reg->WriteString("UserCommitSync","Yes"); reg->CloseKey(); reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\ODBC Data Sources",true); reg->WriteString("MyODBC","Microsoft Access Driver (*.mdb)"); reg->CloseKey(); reg->Free(); return true; } catch(...) { reg->Free(); return false; }} 在Form1或DataModule1上放一Database1,双击Database1,会弹出一对话框,Driver name选MSACCESS,Name中输入任一不存在的别名如MyAcesss97(供Table1等使用)去掉Login Prompt,再点一下Defaults,在参数框中找到下列参数:DATABASE NAME=DRIVE:/PATH/DATABASE.MDB就是设定你的数据库路径的,可先改成指向你的任一库:DATABASE NAME=c:\PATH\myAccess.MDB程序中只要动态改变此参数就可任意指向你的Access97库了Database1->Params->Values["DATABASE NAME"]=新的其它Access97库路径 请问reg->WriteString("DBQ",programpath+"EzDoc.mdb")这句话中,EzDoc.mdb可以是相对programpath的相对路径么?真的谢谢你,yq3woaini(哈哈镜(初级代码工)(★★★)) 这分等结贴了就加给你 强烈鄙视云峰工作室弄的王码五笔86版64位 2013.3 win8 求一个100个汉字字符串的压缩算法? 如何去除字符串中的数字 求教:下面语句对吗??? edit与tupdown联用的问题 求教一些用Delphi来windows编程的学习经验,80送!急! 急,关于字段的问题!~~~~~~~~~~~~~~ 急问!!请大家指点一下! 求教RichEdit问题 调用DLL中MDIChild的难题解决了,更大的难题又来了。 为一个程序员的母亲申冤 同时画三个图,用三个TIMER该怎么画?散分!
你可以参看注册表里面ODBC的键值
bde 两种控件
直接用相对路径 用connectstring
bde指定文件夹 然后直接指定数据库文件名就行dirvername:= 路径
databasename:=数据名就行了
ADOQuery1.Active :=false;
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\数据库.mdb;Persist Security Info=False';
ADOQuery1.SQL.Text :='select * from 表';
aDOQuery1.Active:=true;
adoquery1.ExecSQL;adotable 相同只用设置 tabalename:='表名'
Table1.DatabaseName := 路径 extractfilepath(tablename);
Table1.TableName := 表名
Table1.TableName :=user //user为表名,这样对么
Database1->Params->Values["PASSWORD"]="mypassword";
创建数据源:
bool __fastcall TThreadLoad::createdatasource()
{
//此函数用来创建供bde使用的odbc数据源来连接数据库
TRegistry *reg = new TRegistry;
try
{
reg->RootKey=HKEY_LOCAL_MACHINE;
//创建驱动程序
if(!reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\Microsoft Access Driver (*.mdb)",false))
{
Application->MessageBox("请安装MicroSoft Access驱动程序","提示",MB_OK);
}
reg->CloseKey();
/*
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\Microsoft Access Driver (*.mdb)",true);
reg->WriteInteger("UsageCount",2);
char p[100];
String path1;
GetSystemDirectory(p,100);
String path(p);
path=path+"\\odbcjt32.dll";
reg->WriteString("Driver",path);
reg->WriteString("Setup",path);
reg->WriteString("APILevel","1");
reg->WriteString("ConnectFunctions","YYN");
reg->WriteString("DriverODBCVer","02.50");
reg->WriteString("DSN","MS Access 97 Database");
reg->WriteString("FileExtns","*.mdb");
reg->WriteString("FileUsage","2");
reg->WriteString("SQLLevel","0");
reg->WriteString("UID","Admin");
reg->CloseKey();
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Drivers",true);
reg->WriteString("Microsoft Access Driver (*.mdb)","Installed");
//创建odbc驱动文件列表信息
reg->CloseKey();
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Core",true);
reg->WriteInteger("UsageCount",3);
reg->CloseKey();
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Core\\FileList",true);
char pchar[100]; GetSystemDirectory(pchar,100);
String path2(pchar);
reg->WriteString("ODBC16GT.DLL",path2+"\\ODBC16GT.DLL");
reg->WriteString("ODBC32GT.DLL",path2+"\\ODBC32GT.DLL");
reg->WriteString("ODBC32.DLL",path2+"\\ODBC32.DLL");
reg->WriteString("ODBCCP32.DLL",path2+"\\ODBCCP32.DLL");
reg->WriteString("ODBCCR32.DLL",path2+"\\ODBCCR32.DLL");
reg->WriteString("ODBCINT.DLL",path2+"\\ODBCINT.DLL");
reg->WriteString("ODBCTRAC.DLL",path2+"\\ODBCTRAC.DLL");
reg->WriteString("ODBCAD32.EXE",path2+"\\ODBCAD32.EXE");
reg->WriteString("ODBCCP32.CPL",path2+"\\ODBCCP32.CPL");
reg->WriteString("ODBCINST.HLP",path2+"\\ODBCINST.HLP");
reg->WriteString("ODBCINST.CNT",path2+"\\ODBCINST.CNT");
reg->WriteString("DS16GT.DLL",path2+"\\ODBC16GT.DLL");
reg->WriteString("DS32GT.DLL",path2+"\\ODBC32GT.DLL");
reg->CloseKey();
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\MS Code Page Translator",true);
reg->WriteString("Translator",path2+"\\MSCPXL32.DLL");
reg->WriteString("Setup",path2+"\\MSCPXL32.DLL");
reg->WriteInteger("UsageCount",3);
reg->CloseKey();
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\MS Code Page Translator\\FileList",true);
reg->WriteString("MSCPXL32.DLL",path2+"\\MSCPXL32.DLL");
reg->WriteString("12520437.CPX",path2+"\\12520437.CPX");
reg->WriteString("12520850.CPX",path2+"\\12520850.CPX");
reg->CloseKey();
reg->OpenKey("SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC Translators",true);
reg->WriteString("MS Code Page Translator","Installed"); //存在就返回
reg->CloseKey();
*/
reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\MyODBC",true);
String systempath;
reg->CloseKey();
reg->OpenKey("SOFTWARE\\odbc\\odbcinst.ini\\Microsoft Access Driver (*.mdb)",true);
systempath=reg->ReadString("Driver");
String programpath=ExtractFilePath(Application->ExeName); //创建数据源
reg->CloseKey();
reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\MyODBC",true);
reg->WriteString("Driver",systempath);
reg->WriteString("DBQ",programpath+"EzDoc.mdb");
reg->WriteInteger("DriverId",25);
reg->WriteString("FIL","MS Access;");
reg->WriteInteger("SafeTransactions",0);
reg->WriteString("UID","");
reg->CloseKey();
reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\MyODBC\\Engines\\Jet",true);
reg->WriteString("ImplicitCommitSync","");
reg->WriteInteger("MaxBufferSize",2048);
reg->WriteInteger("PageTimeout",5);
reg->WriteInteger("Threads",3);
reg->WriteString("UserCommitSync","Yes");
reg->CloseKey();
reg->OpenKey("SOFTWARE\\odbc\\ODBC.INI\\ODBC Data Sources",true);
reg->WriteString("MyODBC","Microsoft Access Driver (*.mdb)");
reg->CloseKey();
reg->Free();
return true;
}
catch(...)
{
reg->Free();
return false;
}
}
双击Database1,会弹出一对话框,
Driver name选MSACCESS,
Name中输入任一不存在的别名如MyAcesss97(供Table1等使用)
去掉Login Prompt,
再点一下Defaults,在参数框中找到下列参数:
DATABASE NAME=DRIVE:/PATH/DATABASE.MDB
就是设定你的数据库路径的,可先改成指向你的任一库:
DATABASE NAME=c:\PATH\myAccess.MDB
程序中只要动态改变此参数就可任意指向你的Access97库了
Database1->Params->Values["DATABASE NAME"]=新的其它Access97库路径
这分等结贴了就加给你