我之前没用过数据库,但现在要调试一个程序需要访问数据库,所以我昨天装了SQL server 2008,按照安装手册一步步下来都很顺利,今天调试程序,可就是怎么也连接不了数据库,找人帮我远程了下,也看不出来哪有问题,下面我把我的配置都贴出来请大家帮忙给看看。这是服务器的配置这是本机的IP地址这是数据库服务器的IP地址TCP端口1433这是客户端的配置
这个管道我是复制了服务器中的,本来是sql\qurel,但是改不改结果都是一样的,现在设的是\\.\pipe\MSSQL$MSSQL2008\sql\query
我在C:\Windows\System32\drivers\etc找到hosts,也做了这项添加接下来是我cmd的结果,ping 127.0.0.1是通的ping myserver 就找不到,直接用服务器名称“WIN-AUBP50S9JTS\MSSQL2008”或“MSSQL2008”也一样telnet 127.0.0.1 1433时,左上角光标闪烁
http://my.csdn.net/uploads/201205/24/1337839828_9999.png
下面就是我的断点程序代码和调试遇到的问题
代码:void CSiSectionParse::SetPara(CString outputPath, CString bakputPath, CString server, CString database, CString uid, CString pwd){
m_strOutputPath = outputPath;
m_strBakputPath = bakputPath;
m_strServer = server;
m_strDatabase = database;
m_strUID = uid;
m_strPWD = pwd;
m_ADOConnection.SetConnectString(m_strServer, m_strDatabase, m_strUID, m_strPWD);
m_bDbConnection = m_ADOConnection.GetConnection(m_pConnection); #ifdef _DEBUG
if(m_bDbConnection)
std::cout << endl << "数据库连接成功" << endl;
else
std::cout << endl << "数据库连接失败" << endl;
#endif
{
string minfo;
if(m_bDbConnection)
minfo="数据库连接成功" ;
else
minfo="数据库连接失败"; LogString2(minfo);
}
return;
}
调试的配置文件:这是调试:
很抱歉我在这个区没有积分,只能最多给20分,请大家还是看在我辛苦贴了这么多图的份上凑过来想想办法,谢谢!
这个管道我是复制了服务器中的,本来是sql\qurel,但是改不改结果都是一样的,现在设的是\\.\pipe\MSSQL$MSSQL2008\sql\query
我在C:\Windows\System32\drivers\etc找到hosts,也做了这项添加接下来是我cmd的结果,ping 127.0.0.1是通的ping myserver 就找不到,直接用服务器名称“WIN-AUBP50S9JTS\MSSQL2008”或“MSSQL2008”也一样telnet 127.0.0.1 1433时,左上角光标闪烁
http://my.csdn.net/uploads/201205/24/1337839828_9999.png
下面就是我的断点程序代码和调试遇到的问题
代码:void CSiSectionParse::SetPara(CString outputPath, CString bakputPath, CString server, CString database, CString uid, CString pwd){
m_strOutputPath = outputPath;
m_strBakputPath = bakputPath;
m_strServer = server;
m_strDatabase = database;
m_strUID = uid;
m_strPWD = pwd;
m_ADOConnection.SetConnectString(m_strServer, m_strDatabase, m_strUID, m_strPWD);
m_bDbConnection = m_ADOConnection.GetConnection(m_pConnection); #ifdef _DEBUG
if(m_bDbConnection)
std::cout << endl << "数据库连接成功" << endl;
else
std::cout << endl << "数据库连接失败" << endl;
#endif
{
string minfo;
if(m_bDbConnection)
minfo="数据库连接成功" ;
else
minfo="数据库连接失败"; LogString2(minfo);
}
return;
}
调试的配置文件:这是调试:
很抱歉我在这个区没有积分,只能最多给20分,请大家还是看在我辛苦贴了这么多图的份上凑过来想想办法,谢谢!
我来给大家文字补充一下缺失的部分:
1.本机的IP地址
IP地址:172.18.130.106
IP动态端口:0
IP端口:
活动:是
已启用:是
2.数据库服务器的IP地址
IP地址:127.0.0.1
IP动态端口:
IP端口:1433(没配1433的时候也不行,配了也还是不行)
活动:是
已启用:是
3.TCP端口
TCP动态端口:0(没配0的时候也不行,配了也不行)
TCP端口:1433
4.客户端协议的TCP/IP属性
保持活动状态:30000
保持活动状态的间隔:1000
默认端口:1433
已启用:是
5.服务器和客户端的General都是:\\.\pipe\MSSQL$MSSQL2008\sql\query
差不多就这些了吧,大家哪里还需要知道就问我
m_bDbConnection = m_ADOConnection.GetConnection(m_pConnection)
catch如果这句捕获不到,就打开库里的一个表,再捕获那句
telnet 127.0.0.1 1433可以连接,说明数据库没问题了问题出在语句上
((*(IUnknown*)(&(*(IDispatch*)(&(*(_ADO*)(&(*(Connection15*)(&*((m_pConnection).m_pInterface)))))))))).vfptr CXX0030:错误:无法计算表达式的值什么意思,是说我的m_bDbConnection无法计算,直接就给等于false了吗?
另外的,如果是本机的程序访问本机的数据库,那么先尝试把Share Memory协议打开,然后连接字符串就写一个.
其次,数据库的实例是什么,连接字符串是否写了实例名?
谢谢你!SQL Server Management Studio中,我是可以连接这个实例的,但我真的没接触过数据库,你这样讲“连接字符串”我都不知是什么意思,要不你要是有空的话帮我远程看一下行吗?我的QQ352697982