问题1
我用ADO连接设了用户名密码的数据库
但是我发现我不输入 用户名和密码 都可以连接成功 而且还能把数据读出来
剪了一个名为test数据库 建了一个名为people的表
见了一个 用户名1234 密码1234 的用户
我照着书上程序写的 大概是这样
_ConnectionPtr pConnection;
pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open("test;","","",adModeUnknown);
后面是度数据
我奇怪,我明明设了用户名和密码为什么还能连接成功,而且还把数据读出来,默认用户 "管理员" 我也设了密码问题2
如果我把库名写错,程序直接出错终止
m_pConnection->Open("1111;","","",adModeUnknown);
我想不让程序终止,我想出现一个提示后,重新输入一个数据库名,应该怎么写?
if(pConnection->Open(_bstr_t(strConnect), "", "", adModeUnknown) != S_OK) (我这样不行)
我用ADO连接设了用户名密码的数据库
但是我发现我不输入 用户名和密码 都可以连接成功 而且还能把数据读出来
剪了一个名为test数据库 建了一个名为people的表
见了一个 用户名1234 密码1234 的用户
我照着书上程序写的 大概是这样
_ConnectionPtr pConnection;
pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open("test;","","",adModeUnknown);
后面是度数据
我奇怪,我明明设了用户名和密码为什么还能连接成功,而且还把数据读出来,默认用户 "管理员" 我也设了密码问题2
如果我把库名写错,程序直接出错终止
m_pConnection->Open("1111;","","",adModeUnknown);
我想不让程序终止,我想出现一个提示后,重新输入一个数据库名,应该怎么写?
if(pConnection->Open(_bstr_t(strConnect), "", "", adModeUnknown) != S_OK) (我这样不行)
把出错的地方TRYCATCH一下,出错之后重新处理
//用数据库文件的相对路径获取其物理路径
CFile file(L"sj.dat",CFile::modeRead);
CString path = file.GetFilePath();
file.Close();
//创建数据库连接
CoInitialize(NULL);
_ConnectionPtr pConn(_uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
try{
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+(_bstr_t)path,"DBusername","DBpassword",adConnectUnspecified);
}catch (_com_error)
{
}
CString sql("......");
pRst->Open((_variant_t)sql, pConn.GetInterfacePtr(), adOpenStatic, adLockReadOnly, adCmdText);
//如果查询到结果
if(!pRst->rsEOF)
{
//do sth
}
//关闭数据库连接资源
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
以前写的一小段ACCESS数据库查询代码。完全没问题的,因为楼主没有把代码都贴出来,所以自己对比下看看是哪里有问题。
代码在公司,上不了网 。
其实我就是想实现两个功能
1)建立一个数据库用户,登陆的时候必须知道用户名密码才能登陆,以前是在数据库中建一张表保存用户,密码,因为只要有2,3个用户就够了,我想直接建几个数据库用户,结果我发现,登陆时根本不用用户名,密码就能登陆。
2)我想在出错后程序不终止,给一个提示后,继续运行。比如我把数库名字写错了,程序直接终止,try catch 根本没用。
用户名 1234密码1234我在提供程序中选择 Microsoft.Jet.4.0 OLE DB 这个驱动配置时 出现下面错误
---------------------------
Microsoft 数据链接错误
---------------------------
测试连接失败,因为初始化提供程序时发生错误。无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开
如果选择 microsoft ole db provider for odbc dirvers 根本不需要用户名 和密码就能连接成功