您现在的位置是:网站首页> 数据库

VC使用SQL-DMO接口控制SQL Server

摘要

微软为外部程序的MS SQL Server服务访问提供了功能强大的COM接口,通过这些接口,可以不费吹灰之力就可以方便的访问SQL的服务。

  

  第一步:在MS SQL Server的安装目录下面找到在sqldmo.rll文件,然后

  

   #import "sqldmo.rll" no_namespace

  

  这样就生产了sqldmo.tlh和sqldmo.tli文件,里面包含了SQL的COM接口的定义和实现。

  

  第二步:就是具体的实现了。

  

  先来一个启动SQL Server服务

  

   BOOL StartSQLServer()

   {

   //先初始化COM

   if (FAILED(CoInitialize(NULL)))

   {

   AfxMessageBox("Com初始化错误!");

   return FALSE;

   }

   //定义一个SQL Server的对象指针

   _SQLServerPtr spSQLServer;

   //标准方法,建立实例

   if (FAILED(spSQLServer.CreateInstance(__uuidof(SQLServer))))

   {

   AfxMessageBox("无法建立SQL对象!");

   return FALSE;

   }

  

   try

   {

   //这里设置连接SQL的一些参数

   //简单。设置Login超时

   spSQLServer->PutLoginTimeout(10);

   //随便起个名字好啦,管不着我啦

   spSQLServer->PutApplicationName("MyAppName");

   spSQLServer->PutHostName("MyHostName");

   //网络数据Packet的大小

   spSQLServer->PutNetPacketSize(1024);

  

   CString strServer(”(Local)”);

   Cstring strUserName(“sa”); //连接启动的用户名,也可以使用信任连接,不用提供用户名和密码,请参考MSDN

   Cstring strPassword(””);//就是密码啦 spSQLServer->Connect(_variant_t(strServer),_variant_t(strUserName),_variant_t());

   }

   catch(_com_error pCE)

   {

   //连接错误啦,是服务器没有启动吧

   try

   {

   //真正启动SQL Server的代码在这里 spSQLServer->Start(FALSE,_variant_t(strServer),_variant_t(strUserName),_variant_t(strPassword)); }

   catch(_com_error pCE)

   {

   //这次的异常处理倒没有执行什么操作啊,随便处理一下,返回一个错误信息啦。

   AfxMessageBox(pCE.Description());

   spSQLServer.Release();

   return FALSE;

   }

   }

  

   //接下来是释放资源啦,try catch是不是用成习惯了,这样也要??反正是没有错的,多用一下也好啦。

   try

   {

   spSQLServer.Release();

   spSQLServer.Release();

   }

   catch(_com_error pCE)

   {

   AfxMessageBox(pCE.Description());

  

   return FALSE;

   }

  

   //释放COM

   CoUninitialize();

   return TRUE;

   }

  

  通过#import "sqldmo.rll"还能获得其他的很多接口,比如Attach数据库、FullTextService、获得设置SQL Server服务器的属性等等,当然相对应的停止SQL服务我就不用说了吧。












Top