如何取消c++builder使用ADO连接时的密码提示
ADOConnection1->ConnectionString为
- C/C++ code
Provider=VFPOLEDB.1;Data Source=D:\CODE\C++\BCB\ADO;Mode=ReadWrite;Extended Properties="";User ID="""""";Password="";Mask Password=True;Cache Authentication=False;Encrypt Password=True;Collating Sequence=MACHINE
问题一:为何我只通知能使用绝对路径连接
我不清楚如何在代码中使用动态连接。中VB中有个App.Path 获得当前路径,在C++builde是如何获得啊!
问题二:如何取消c++builder使用ADO连接时的密码提示
我联结的是VFP的DBF文件,根本不存PASSWARD,为何有这个提示,如何取消啊!
我是c++builder新手,谢谢大家!
[解决办法]
1
ExtractFilePath(Application->ExeName).c_str()
2
ADOConnection->Close();
ADOConnection->LoginPrompt = false;
ADOConnection->Open("","");
[解决办法]
1.使用相对路径也可以,但是要保证是在工程路径下(通过工程选项设置)。
获取路径可以使用api函数,也可以使用c++builder自带的函数:
ExpandFileName() 返回文件的全路径(含驱动器、路径)
ExtractFileExt() 从文件名中抽取扩展名
ExtractFileName() 从文件名中抽取不含路径的文件名
ExtractFilePath() 从文件名中抽取路径名
ExtractFileDir() 从文件名中抽取目录名
ExtractFileDrive() 从文件名中抽取驱动器名
...
GetCurrentDir() 获取当前目录
2.ADOConnection连接的时候选择空白密码或者设置LoginPrompt为false.
[解决办法]
把ADOConnection1 Properties项中的 LoginPrompt项设成 false
[解决办法]
AnsiString strCommand;
strCommand.sprintf("Provider=VFPOLEDB.1;Data Source=%s;Mode=ReadWrite;Extended Properties=\"\";User ID=\"\"\"\"\"\";Password=\"\";Mask Password=True;Cache Authentication=False;Encrypt Password=True;Collating Sequence=MACHINE", ExcludeTrailingPathDelimiter(ExtractFilePath(Application->ExeName)) );
ADOConnection->Close();
ADOConnection->LoginPrompt = false;
ADOConnection->ConnectionString = WideString(strCommand);
ADOConnection->Open("","");
if( ADOConnection->Connected == false )
throw Exception( "组件 ADOConnection 不能连接数据库!" );
[解决办法]
在C++中要使用双引号的 \",在双引号中字符串使用单引号。
[解决办法]
另外BCB如何换行啊,也就是以上的ConnectionString太长,在VB中可以使用 _ 回车换行,在BCB中能否实现?
==============
反斜杠("\")
[解决办法]
呵呵,刚从VB转到BCB使用上来呀。
- C/C++ code
ADOConnection1->ConnectionString="\Provider=VFPOLEDB.1;Data Source=D:\\CODE\\C++\\BCB\\ADO;\Mode=ReadWrite;Extended Properties=\"\";User ID=\"\";\Password=\"\";Mask Password=True;Cache Authentication=False;\Encrypt Password=False;Collating Sequence=MACHINE";
[解决办法]
D:\CODE\C++\BCB\ADO; ---> D:\\CODE\\C++\\BCB\\ADO;
[解决办法]
ExtractFilePath(Application-> ExeName).c_str()
就可以得到路径啊!!