《程序员》杂志2001年第11期C++Builder专家门诊文章

Wingsun 2002-04-05 09:19:56
Q:如何打开一个带有密码的Access数据库。
A:如果你使用的是ADO的方式来访问Access数据库,那么你可以在ConnectString中加入: Jet OLEDB:Database Password=Your Password即可;如果你使用的是BDE的方式来访问Access97数据库,那么你可以这样选择Driver为MSACCESS,然后在Params中加入Password=Your Password;如果你是通过BDE利用ODBC来访问Access数据库,也是在Params中加入Password=Your Password即可。

Q:如何在程序中修改Access的数据库密码。
A:改变Access的数据库密码有两种方法,一种是调用DAO的Database对象的NewPassword方法,一种是通过DAO的CompactDatabase方法来改变数据库密码。
首先在你的程序中加入关于DAO的引用,也许你会觉得比较难,其实很简单,C++Builder5.0种已经附带了关于DAO的引用,你只需要将其编译一下,然后连接到程序中即可。你可将位于C++Builder5.0安装目录下的Source\Comservers\Office2k中的dao_2k.cpp添加到你的工程中,然后编译,生成DAO_2K.obj,然后将这个文件拷贝到C++Builder5.0的安装目录下的Lib\Obj子目录下。以后在你的程序中你只需要:
#include <dao_2k.h>
#pragma link "DAO_2K"
即可使用DAO。
第一种改变数据库密码的方法:
TCOM_DBEngine Engine=new CoDBEngine->Create();
DatabasePtr Database=Engine->OpenDatabase(WideString("F:\\backup.mdb"),TVariantInParam(TRUE),TVariantInParam(FALSE),TVariantInParam(";PWD=1"));
Database->NewPassword(WideString("1"),WideString("2"));
delete Engine;
第二种改变数据库密码的方法:
TCOM_DBEngine Engine=new CoDBEngine->Create();
WideString p1="L:\\Backup.mdb";
WideString p2="L:\\Backup1.mdb";
WideString Pasw=";pwd=NewPassword";
Engine->CompactDatabase(p1.c_bstr(),p2.c_bstr(),Pasw.c_bstr(),0,";pwd=1");
delete Engine;

Q:如何获得当前程序的版本信息。
A:获得应用程序的版本信息主要使用GetFileVersionInfoSize、GetFileVersionInfo和VerQueryValue三个Windows API来完成。
int VersionSize;
unsigned int fFileInfoSize = sizeof( VS_FIXEDFILEINFO );
char *pVersion;
AnsiString VersionInfo;
VS_FIXEDFILEINFO *FileInfo;
void **ppFileInfo = (void **)&FileInfo;

VersionInfo = "()";
VersionSize = GetFileVersionInfoSize( Application->ExeName.c_str(), NULL );
if( VersionSize != 0 )
{
pVersion = new char[VersionSize];
if(GetFileVersionInfo(Application->ExeName.c_str(),0, VersionSize, pVersion))
{
if( VerQueryValue(pVersion, "\\", ppFileInfo, &fFileInfoSize ) )
{
VersionInfo = " Version ";
VersionInfo += IntToStr( HIWORD(FileInfo->dwFileVersionMS) )+".";
VersionInfo += IntToStr( LOWORD(FileInfo->dwFileVersionMS) )+".";
VersionInfo += IntToStr( HIWORD(FileInfo->dwFileVersionLS) )+" α(build:";
AnsiString Build;
Build.sprintf("%04d",LOWORD(FileInfo->dwFileVersionLS));
VersionInfo += Build+")";
}
}
delete []pVersion;
}
lblVersion->Caption= VersionInfo;
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluetit 2003-02-17
  • 打赏
  • 举报
回复
up
IT-司马青衫 2002-04-06
  • 打赏
  • 举报
回复
┏━━━━━━━━━━━━━┓
┃※※※※★★★★★※※※※┃
┃※【终级掠食者—大白鲨】※┃
┃※※※※★★★★★※※※※┃
┗━━━━━━━━━━━━━┛
学习

13,826

社区成员

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

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