VC++开发GIS系统(7)VC++使用ADO连接数据库

在之前的文章《利用ADO技术实现SQL Server存储二进制数据》中我介绍了一个ADO技术的实例,尽管提供了源代码,但是为了方便这里还是具体介绍下在ADO的使用中的一些细节,希望读者不要太烦。

总体来说ADO的操作可以分为3步,就像把大象装在冰箱中一样。

  1. 连接数据库
  2. 操作数据库
  3. 断开连接

今天分享的是连接数据库的方法。

1.引入ADO库文件

#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")

这里要注意ADO文件的路径位置,一般情况下就是本文所用的路径,包括WIN764位系统。

关于这段语句,#import生成文件 msado15.tlh,默认是有namespace ADODB,所有内容都包在这个名字空间中。用了no_namespace则生成的头文件中没有namespace,所有内容是全局的。rename的意思就是重命名,rename("EOF","adoEOF")将EOF改名为adoEOF,是为了避免和C语言里的EOF重名。

2.初始化OLE/COM环境

::CoInitialize(NULL);// 初始化OLE/COM库环境

3.ADO连接SQLSERVER

代码如下

_ConnectionPtr m_pConnection;
try
{
  // 创建Connection对象
  m_pConnection.CreateInstance("ADODB.Connection");
  // 设置连接字符串,必须是BSTR型或者_bstr_t类型
  _bstr_t strConnect="Provider=SQLOLEDB; Server=localhost; Database=你的数据库; uid=sa; pwd=你的密码;"; 
  //m_pConnection->Open(strConnect,"","",adModeUnknown);
  m_pConnection->Open(strConnect,"","",NULL);
  if(m_pConnection!=NULL)
  {
    AfxMessageBox(_T("数据库连接成功"));
  }
  else
  {
    return -1;
  }
}
// 捕捉异常
catch(_com_error e)
{
  // 显示错误信息
  AfxMessageBox(e.Description());
}

最好把_ConnectionPtr m_pConnection; 的作用域定义的大一点,因为这个变量在操作数据库的操作是必不可少的。较为关键的是下面这句代码:

_bstr_t strConnect="Provider=SQLOLEDB; Server=localhost; Database=myado; uid=sa; pwd=你的密码;"; 

当然这里是用SA用户登陆,如果是用系统账户登陆的,可以用下面的连接代码

_bstr_t strConnect ="Provider=SQLOLEDB;Data Source=YQC-PC(你的用户名)\\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=你的数据库";

另外需要注意的是try和catch语句的使用,一定要使用try和catch语句,否则出了问题都无法调试,如果错误了就会返回类似R6010的错误,调试都不知道问题在哪里。

MapGIS新建文件修改路径或修改子图库自动关闭 MapGIS合并线文件失败

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论