MFC——使用ODBC连接数据库

     我们在MFC中可以很方便的对数据库进行操作。例如对SQL Server,我们在MFC的类向导中选择添加新类-->ODBC Consumer,然后选择我们已经在本机上安装的数据库实例并且也在ODBC数据源中添加了新的DSN,然后一路选择下来MFC会自动为我们生产对应的CRecordset类来和数据库中的表对应。


     这时的CRecordset类应该是这样,例如,我们选择用户数据源DSN为:RoadNetData,自动生产的为:

CString CPointTable::GetDefaultConnect()  
{  
    return _T("DSN=RoadNetData;Trusted_Connection=Yes;APP=Microsoft\x00ae Visual Studio\x00ae 2010;  
                  WSID=LEIPENG-PC;DATABASE=RoadNetData;QuotedId=No");     
}  
  
CString CPointTable::GetDefaultSQL()  
{  
    return _T("[dbo].[PointTable]");  
}  

现在我们要让程序在其他的电脑上也可以访问此台电脑上的数据库,并进行操作,那么我们需要改的有2个:

     1.在Windows防火墙中添加新的入站规则,TCP 1433,即允许监听1433端口,SQL Server的默认端口。

     2.修改默认的连接字符串为:   return _T("DRIVER={SQL SERVER};SERVER=10.1.100.5;Database=RoadNetData;UID=sa;PWD=123456;"); 

     SERVER为本机的IP地址,在此字符串中不需要指定数据源DSN值。然后写上数据库用户名和密码即可。这样我们就可以远程访问此数据库了。


    我们也可以根据给定的参数来连接数据库。

bool CDatabase::Connect(CString server,CString database,CString user,CString pass)  
{  
    CString str = L"DRIVER={SQL SERVER}; SERVER="+ server +"; 
        Database="+ database +"; uid="+ user +"; pwd="+ pass;    //连接字符串,不用设置ODBC源  
    TRACE("SQLConnection: %s \r\n",str);  
    try
	{  
        BOOL b = db->OpenEx(str,CDatabase::noOdbcDialog); //即使错误,也不打开输入密码对话框  
        if( b == FALSE )  
            throw false;  
        return true;  
    }catch(bool)
	{  
        error = L"数据库打开失败";  
    }catch(CDBException &e)
	{  
        error = e.m_strError;  
    }catch(CMemoryException)
	{  
        error = L"CMemoryException in CDB::Connect";  
    }catch(...)
	{  
        error = L"Unknown exception in CDB::Connect";  
    }  
    CString err;  
    err.Format(L"CDB::Connect OpenEx: %d",GetLastError());  
    OutputDebugString(err + L"\r\n");  
    return false;  
}  

    这样我们就可以连接任意机器上的SQL Server数据库了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值