MFC——使用ODBC连接数据库

来源:互联网 发布:ubuntu重启网络管理器 编辑:程序博客网 时间:2024/05/22 18:55

     我们在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数据库了。



原创粉丝点击