1、导入ADO类型库。
在Stdafx.h的头文件添加
#import "C:\Program Files\Common Files\System\ado\msado15.dll"
no_namespace,rename("EOF","adoEOF")
2、初始化COM环境
CADOApp::InitInstance()函数添加
CoInitialize(NULL);
3,添加变量
在类CMyDld类添加代码
_ConnectionPtr m_pConnection;
_ConmandPtr m_pConmand;
_RecordsetPtr m_pRecordset;
4、连接数据库
CADODlg::OnInitDialog()函数添加代码:
HRESULT hr;
try
{
hr=m_pConnection.CreateInstance("ADBDB.Connection");
if(SUCCEEEDED(hr))
{
hr=m_pConnection->Open(_bstr_("Provide=SQLOLEDB;server=temp;database=student;"),_bstr_("sa"),_bstr_(""),-1);
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\t错误信息:%s,e.ErrorMessage());
AfxMessageBox(errormessage);
}
运行的时候一直出现很多错误。
求大神帮我解决为什么有错误
8 个解决方案
#1
database=student;
student是某个数据库中的某个表
另外,user和passwd呢?
student是某个数据库中的某个表
另外,user和passwd呢?
#2
hr=m_pConnection->Open(_bstr_("Provide=SQLOLEDB;server=temp;database=student;"),_bstr_("sa"),_bstr_(""),-1);
我建了个数据库名为C++,表中有这个student表.
我还是不理解这句连接数据库的语句,一些参数都不知道是做什么的?应该怎么赋值?
我还有一个疑问,连接一个数据库.怎么都不用把它那个硬盘的地址给打出来呢?
我建了个数据库名为C++,表中有这个student表.
我还是不理解这句连接数据库的语句,一些参数都不知道是做什么的?应该怎么赋值?
我还有一个疑问,连接一个数据库.怎么都不用把它那个硬盘的地址给打出来呢?
#3
hr=m_pConnection->Open(_bstr_("Provide=SQLOLEDB
#4
先用查询分析器连接通。
#5
不还意思啊,我不懂你的意思,能不能说具体一点啊
#6
int DBConnect::Open(LPCSTR strDstAddress,LPCSTR strUsername,LPCSTR strPassword,LPCSTR strDBName)
{
_strDstAddress = strDstAddress;
_strDBName = strDBName;
_strUsername = strUsername;
_strPassword = strPassword;
HRESULT comhr = ::CoInitialize(NULL);
if(FAILED(comhr))
{
return -1;
}
HRESULT hr = _connection_ptr.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
return -1;
}
char szSQL[SQL_BUFFER_LEN]={0};
memset(szSQL,0,SQL_BUFFER_LEN);
sprintf(szSQL,"Driver={SQL SERVER};Server=%s;DATABASE=%s",strDstAddress,strDBName);
// sprintf(szSQL,"Driver={SQL SERVER};Data Source=%s;Initial Catalog=%s",strDstAddress,strDBName);
try
{
//连接到服务器上数据库
_connection_ptr->Open(szSQL,strUsername,strPassword,adModeUnknown);
if(FAILED(hr))
{
return -1;
}
}
catch(_com_error &err)
{
TRACE(_T("数据库操作失败!错误信息:%s,文件:%s,行:%d.\n"),err.ErrorMessage(),__FILE__,__LINE__);
AfxMessageBox(err.Description());
return -1;
}
m_bDBOpen = TRUE;
return 0;
}
我是这么写的。你可以参考一下。
{
_strDstAddress = strDstAddress;
_strDBName = strDBName;
_strUsername = strUsername;
_strPassword = strPassword;
HRESULT comhr = ::CoInitialize(NULL);
if(FAILED(comhr))
{
return -1;
}
HRESULT hr = _connection_ptr.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
return -1;
}
char szSQL[SQL_BUFFER_LEN]={0};
memset(szSQL,0,SQL_BUFFER_LEN);
sprintf(szSQL,"Driver={SQL SERVER};Server=%s;DATABASE=%s",strDstAddress,strDBName);
// sprintf(szSQL,"Driver={SQL SERVER};Data Source=%s;Initial Catalog=%s",strDstAddress,strDBName);
try
{
//连接到服务器上数据库
_connection_ptr->Open(szSQL,strUsername,strPassword,adModeUnknown);
if(FAILED(hr))
{
return -1;
}
}
catch(_com_error &err)
{
TRACE(_T("数据库操作失败!错误信息:%s,文件:%s,行:%d.\n"),err.ErrorMessage(),__FILE__,__LINE__);
AfxMessageBox(err.Description());
return -1;
}
m_bDBOpen = TRUE;
return 0;
}
我是这么写的。你可以参考一下。
#7
好的,谢谢。我试试看能不能行,如果有问题的话,还请您多多指教啊
#8
m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器服务器服务器服务器;Initial Catalog=数据数据数据数据库库库库;","sa","123456",-1);
http://wenku.baidu.com/view/ffa42ff90242a8956bece48c.html
http://wenku.baidu.com/view/ffa42ff90242a8956bece48c.html
#1
database=student;
student是某个数据库中的某个表
另外,user和passwd呢?
student是某个数据库中的某个表
另外,user和passwd呢?
#2
hr=m_pConnection->Open(_bstr_("Provide=SQLOLEDB;server=temp;database=student;"),_bstr_("sa"),_bstr_(""),-1);
我建了个数据库名为C++,表中有这个student表.
我还是不理解这句连接数据库的语句,一些参数都不知道是做什么的?应该怎么赋值?
我还有一个疑问,连接一个数据库.怎么都不用把它那个硬盘的地址给打出来呢?
我建了个数据库名为C++,表中有这个student表.
我还是不理解这句连接数据库的语句,一些参数都不知道是做什么的?应该怎么赋值?
我还有一个疑问,连接一个数据库.怎么都不用把它那个硬盘的地址给打出来呢?
#3
hr=m_pConnection->Open(_bstr_("Provide=SQLOLEDB
#4
先用查询分析器连接通。
#5
不还意思啊,我不懂你的意思,能不能说具体一点啊
#6
int DBConnect::Open(LPCSTR strDstAddress,LPCSTR strUsername,LPCSTR strPassword,LPCSTR strDBName)
{
_strDstAddress = strDstAddress;
_strDBName = strDBName;
_strUsername = strUsername;
_strPassword = strPassword;
HRESULT comhr = ::CoInitialize(NULL);
if(FAILED(comhr))
{
return -1;
}
HRESULT hr = _connection_ptr.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
return -1;
}
char szSQL[SQL_BUFFER_LEN]={0};
memset(szSQL,0,SQL_BUFFER_LEN);
sprintf(szSQL,"Driver={SQL SERVER};Server=%s;DATABASE=%s",strDstAddress,strDBName);
// sprintf(szSQL,"Driver={SQL SERVER};Data Source=%s;Initial Catalog=%s",strDstAddress,strDBName);
try
{
//连接到服务器上数据库
_connection_ptr->Open(szSQL,strUsername,strPassword,adModeUnknown);
if(FAILED(hr))
{
return -1;
}
}
catch(_com_error &err)
{
TRACE(_T("数据库操作失败!错误信息:%s,文件:%s,行:%d.\n"),err.ErrorMessage(),__FILE__,__LINE__);
AfxMessageBox(err.Description());
return -1;
}
m_bDBOpen = TRUE;
return 0;
}
我是这么写的。你可以参考一下。
{
_strDstAddress = strDstAddress;
_strDBName = strDBName;
_strUsername = strUsername;
_strPassword = strPassword;
HRESULT comhr = ::CoInitialize(NULL);
if(FAILED(comhr))
{
return -1;
}
HRESULT hr = _connection_ptr.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
return -1;
}
char szSQL[SQL_BUFFER_LEN]={0};
memset(szSQL,0,SQL_BUFFER_LEN);
sprintf(szSQL,"Driver={SQL SERVER};Server=%s;DATABASE=%s",strDstAddress,strDBName);
// sprintf(szSQL,"Driver={SQL SERVER};Data Source=%s;Initial Catalog=%s",strDstAddress,strDBName);
try
{
//连接到服务器上数据库
_connection_ptr->Open(szSQL,strUsername,strPassword,adModeUnknown);
if(FAILED(hr))
{
return -1;
}
}
catch(_com_error &err)
{
TRACE(_T("数据库操作失败!错误信息:%s,文件:%s,行:%d.\n"),err.ErrorMessage(),__FILE__,__LINE__);
AfxMessageBox(err.Description());
return -1;
}
m_bDBOpen = TRUE;
return 0;
}
我是这么写的。你可以参考一下。
#7
好的,谢谢。我试试看能不能行,如果有问题的话,还请您多多指教啊
#8
m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器服务器服务器服务器;Initial Catalog=数据数据数据数据库库库库;","sa","123456",-1);
http://wenku.baidu.com/view/ffa42ff90242a8956bece48c.html
http://wenku.baidu.com/view/ffa42ff90242a8956bece48c.html