帮忙解释下这个ODBC连接SQL数据库的代码

时间:2022-01-23 19:45:31
          _ConnectionPtr   m_pConn;   
          CString   m_sConn="Provider=SQLOLEDB.1;Data   Source=192.168.3.9;Initial     
  Catalog=sode";   //sode是数据库服务器192.168.3.9上的一个数据库   
          m_pConn.CreateInstance("ADODB.Connection");   
          try   
          {   
                  HRESULT   hr=m_pConn->Open((_bstr_t)m_sConn,"sa","mapper",adConnectUnspecified);           
                  if   (FAILED(hr))   
                  {   
                          AfxMessageBox("不能连接数据库   source!");   
                          return   FALSE;   
                  }   
          }   
          catch(_com_error   e)   
          {   
                  AfxMessageBox("不能连接数据库   error!");   
                  return   FALSE;   
          }   
-------------------------------------------------------------------------------------
上面的代码是在百度里搜来的。最近一直找这方面的资料学习数据库的连接。可是搜了好多几乎每个写的都不一样,越看越晕。就拿这个例子来说吧。

还请各位学长帮忙详细的每句解释下这段代码。
然后还带着几个问题:
1.  _ectiConnonPtr 这个是什么类(MSDN没有找到)?为啥连接数据库没有用到database类呢?
2. Provider=SQLOLEDB.1 这个又是什么呢?
3.  CreateInstance("ADODB.Connection 这个是再做什么呢?
4. 因为找不到 _ectiConnonPtr 类所以后面的 CreateInstance 函数和 用到的Open打开数据库函数的参数也查不到,只知道跟database里的open函数不一样。

5 个解决方案

#1


http://www.codeproject.com/KB/database/connectionstrings.aspx

看看孙鑫视频的最后一章吧,

#2


看了。。不过不是很理解

#3


引用楼主 a32132100 的回复:
          _ConnectionPtr  m_pConn; 
          CString  m_sConn="Provider=SQLOLEDB.1;Data  Source=192.168.3.9;Initial   
  Catalog=sode";  //sode是数据库服务器192.168.3.9上的一个数据库 
          m_pConn.CreateInstance("ADODB.Connection"); 
          try 
          { 
                  HRESULT  hr=m_pConn->Open((_bstr_t)m_sConn,"sa","mapper",adConnectUnspecified);         
                  if  (FAILED(hr)) 
                  { 
                          AfxMessageBox("不能连接数据库  source!"); 
                          return  FALSE; 
                  } 
          } 
          catch(_com_error  e) 
          { 
                  AfxMessageBox("不能连接数据库  error!"); 
                  return  FALSE; 
          } 
-------------------------------------------------------------------------------------
上面的代码是在百度里搜来的。最近一直找这方面的资料学习数据库的连接。可是搜了好多几乎每个写的都不一样,越看越晕。就拿这个例子来说吧。

还请各位学长帮忙详细的每句解释下这段代码。
然后还带着几个问题:
1.  _ectiConnonPtr 这个是什么类(MSDN没有找到)?为啥连接数据库没有用到database类呢?
2. Provider=SQLOLEDB.1 这个又是什么呢?
3.  CreateInstance("ADODB.Connection 这个是再做什么呢?
4. 因为找不到 _ectiConnonPtr 类所以后面的 CreateInstance 函数和 用到的Open打开数据库函数的参数也查不到,只知道跟database里的open函数不一样。

1、_ectiConnonPtr?不是_ConnectionPtr么。准确的说,这个是一个接口指针类型,连接数据库有很多种方法,并不一定用到CDatabase。
2、Provider版本申明,SQL2000和2005是一样的,2008就是1.1了好像,如果没记错的话。
3、为接口对象创建实例啊。参见接口知识。
为什么查不到?
4、干嘛总盯着Database不放?真奇怪。

#4


你的这些问题不算是白,但是太奇怪,奇怪得我不太知道如何回答。

#5


以为看了一些基础课的书是用到database类的。所以就总联系这个类思考。其他的就没见过也不理解了。

#1


http://www.codeproject.com/KB/database/connectionstrings.aspx

看看孙鑫视频的最后一章吧,

#2


看了。。不过不是很理解

#3


引用楼主 a32132100 的回复:
          _ConnectionPtr  m_pConn; 
          CString  m_sConn="Provider=SQLOLEDB.1;Data  Source=192.168.3.9;Initial   
  Catalog=sode";  //sode是数据库服务器192.168.3.9上的一个数据库 
          m_pConn.CreateInstance("ADODB.Connection"); 
          try 
          { 
                  HRESULT  hr=m_pConn->Open((_bstr_t)m_sConn,"sa","mapper",adConnectUnspecified);         
                  if  (FAILED(hr)) 
                  { 
                          AfxMessageBox("不能连接数据库  source!"); 
                          return  FALSE; 
                  } 
          } 
          catch(_com_error  e) 
          { 
                  AfxMessageBox("不能连接数据库  error!"); 
                  return  FALSE; 
          } 
-------------------------------------------------------------------------------------
上面的代码是在百度里搜来的。最近一直找这方面的资料学习数据库的连接。可是搜了好多几乎每个写的都不一样,越看越晕。就拿这个例子来说吧。

还请各位学长帮忙详细的每句解释下这段代码。
然后还带着几个问题:
1.  _ectiConnonPtr 这个是什么类(MSDN没有找到)?为啥连接数据库没有用到database类呢?
2. Provider=SQLOLEDB.1 这个又是什么呢?
3.  CreateInstance("ADODB.Connection 这个是再做什么呢?
4. 因为找不到 _ectiConnonPtr 类所以后面的 CreateInstance 函数和 用到的Open打开数据库函数的参数也查不到,只知道跟database里的open函数不一样。

1、_ectiConnonPtr?不是_ConnectionPtr么。准确的说,这个是一个接口指针类型,连接数据库有很多种方法,并不一定用到CDatabase。
2、Provider版本申明,SQL2000和2005是一样的,2008就是1.1了好像,如果没记错的话。
3、为接口对象创建实例啊。参见接口知识。
为什么查不到?
4、干嘛总盯着Database不放?真奇怪。

#4


你的这些问题不算是白,但是太奇怪,奇怪得我不太知道如何回答。

#5


以为看了一些基础课的书是用到database类的。所以就总联系这个类思考。其他的就没见过也不理解了。