请问测试数据库能否正常连接的小函数怎么写啊?(内详)

hexi1981 2003-10-20 09:49:24
我(VC初学者)想写一个测试数据库连接的小函数,自己写的有问题.

ADO不通过DSN对SQL SERVER数据库进行连接,通过前面得到的4个值来测试连接.

m_strDBIP:数据库Server的IP地址
m_strDBName:数据库名
m_strDBID:用户名
m_strDBPW:数据库密码

自己写的一部分,感觉问题很大,请帮我看看代码该怎么写,万分感谢.

void CDBSetupDlg::OnDBTestBUTTON()
{



//用对话框内的数据更新对象的数据
UpdateData();

//添加一个指向Connection对象的指针
_ConnectionPtr m_pConnection;

//创建连接字符串
//_bstr_t strConn;
//strConn = "driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139";

HRESULT hr;
try
{
//创建Connection对象
hr = m_pConnection.CreateInstance("ADODB.Connection");

if(SUCCEEDED(hr))
{
//设置超时时间为5秒
m_pConnection->ConnectionTimeout = 5;

//hr = m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=autocap;UID=sa;PWD=password","","",adModeRead);
hr = m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=tempdb;UID=sa;PWD=password1","","",adModeUnknown);
//不通过DSN对SQL SERVER数据库进行连接:
}
}
//捕捉异常
catch(_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);
}

if(SUCCEEDED(hr))
AfxMessageBox("连接数据库成功!");

//如果已经打开了连接则关闭它
//State属性指明当前Connection对象的状态,0表示关闭,1表示已经打开
if(m_pConnection->State)
m_pConnection->Close();


}
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hexi1981 2003-10-20
  • 打赏
  • 举报
回复
我重新修改代码,但总是捕捉到这个错误"Unknown error 0x800A0BB9"

void CDBSetupDlg::OnDBTestBUTTON()
{

//用对话框内的数据更新对象的数据
UpdateData();

CString strConnect = "driver={SQL Server};Server="+m_strDBIP+";DATABASE="+m_strDBName+";UID="+m_strDBID+";PWD="+m_strDBPW;
AfxMessageBox(strConnect);

if(TestDB(LPCSTR(strConnect)))
AfxMessageBox("数据库连接成功!");

}

BOOL CDBSetupDlg::TestDB(LPCTSTR strConn)
{
//添加一个指向Connection对象的指针
_ConnectionPtr m_pConnection;

try
{
///创建 Connection 对象
HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
if (SUCCEEDED(hr))
{
//设置超时时间为5秒
m_pConnection->ConnectionTimeout = 5;

// 连接数据库
if (SUCCEEDED(m_pConnection->Open(strConn, "", "", adModeRead)))
{
return TRUE;
}
}
}
catch (_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);

return FALSE;
}
catch (...)
{
AfxMessageBox("连接数据库时发生未知错误");
}
return FALSE;

//如果已经打开了连接则关闭它
//State属性指明当前Connection对象的状态,0表示关闭,1表示已经打开
if(m_pConnection->State)
m_pConnection->Close();
}
spwnihao 2003-10-20
  • 打赏
  • 举报
回复
有什么问题,说出来呀
hexi1981 2003-10-20
  • 打赏
  • 举报
回复
Thanks for help :-)
spwnihao 2003-10-20
  • 打赏
  • 举报
回复
原来是strConn类型出错,CString怎么转换到_bstr_t呢??
CString strSQL = "Select * from TableDic";
BSTR bstrSQL = strSQL.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);

//打开连接,直接写就行了
eg:
m_pConnection->Open("Provider=SQLOLEDB.1;Password=Yagopassword;Persist Security Info=True;User ID=sa;Initial Catalog=JapanBar;Data Source=(LOCAL)","","",0);
hexi1981 2003-10-20
  • 打赏
  • 举报
回复
原来是strConn类型出错,CString怎么转换到_bstr_t呢??

CString strConnect;
LPCTSTR(strConnect);
_bstr_t strConn = _bstr_t(strConnect);

这样还是出错啊~
本课程是SQL系列课程第2篇:MySQL数据库。MySQL篇    MySQL数据库管理系统安装        10.1 MySQL概述            10.1.1 MySQL主要特点            10.1.2 MySQL主要版本         10.2 MySQL数据库安装和配置            10.2.1 Windows平台安装MySQL                1.下载MySQL8.0社区版                2.安装MySQL8.0社区版            10.2.2 Linux平台安装MySQL                1.更新软件仓库包索引                2.安装 MySQL                3.防火墙设置                4.启动 MySQL 服务                5.配置远程登录            10.2.3 macOS平台安装MySQL                1.下载MySQL8.0社区版                2.安装 MySQL    MySQL数据库管理系统日常管理        11.1 登录服务器        11.2 常见的管理命令            11.2.1 帮助命令            11.2.2 退出命令            11.2.3 数据库管理            11.2.4 用户管理        11.3 查看系统对象信息            11.3.1 查看有哪些库            11.3.2 查看有哪些表            11.3.3 查看表结构        11.4 执行脚本文件            11.4.1 不需要登录MySQL方式            11.4.2 需要登录MySQL方式        11.5 数据库备份与恢复            11.5.1 备份数据库            11.5.2 恢复数据库            11.5.3 实例:在Windows下备份到Linux下恢复        11.6 MySQL图形界面管理工具            11.6.1 下载和安装MySQL Workbench            11.6.2 配置连接数据库            11.6.3 管理数据库            11.6.4 管理表            11.6.5 执行SQL语句    MySQL中特有的SQL语句        12.1 自增长字段        12.2 MySQL日期相关数据类型        12.3 限制返回行数        12.4 常用函数            12.4.1 数字型函数            12.4.2 字符串函数            12.4.3 日期和时间函数    MySQL数据库开发        13.1 存储过程            13.1.1 使用存储过程重构“找出所有销售部所有员工信息”案例            13.1.2 调用存储过程            13.1.3 删除储过程        13.2 存储过程参数            13.2.1 IN参数            13.2.2 OUT参数            13.2.3 INOUT参数        13.3 存储函数            13.3.1 创建存储函数            13.3.2 调用存储函数            13.3.3 删除存储函数        13.4 触发器            13.4.1 触发器分类            13.4.2 创建触发器语法            13.4.3 使用NEW和OLD修饰符            13.4.4 示例:员工表操作更新日志            13.4.5 测试触发器

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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