HRESULT hr;
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=SQLOLEDB;Data Source=192.168.1.13;Initial Catalog=IEWatch;User ID=sa;Password=123;", "", "", adModeUnknown);

if(pr)
{ pr = 0;

m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection=m_pConnection; _bstr_t textpro[4] ={"CREATE procedure sp_web_ist (@mca char(12), @ip varchar(20), @happentime varchar(20), @browsepage varchar(100)) as Insert into webbrowse(mca, ip, happentime, browsepage) values(@mca, @ip, @happentime, @browsepage)",
  "CREATE procedure sp_qq_ist (@mca char(12), @ip varchar(20), @happentime varchar(20), @uid varchar(100), @content varbinary(2560)) as Insert into qqdata(mca, ip, happentime, uid, content) values(@mca, @ip, @happentime, @uid, @content)",
  "CREATE procedure sp_email_ist (@mca char(12), @ip varchar(20), @happentime varchar(20), @emailname varchar(100), @epassword varchar(100)) as Insert into email(mca, ip, happentime, emailname, epassword) values(@mca, @ip, @happentime, @emailname, @epassword)",
  "CREATE procedure sp_ftp_ist (@mca char(12), @ip varchar(20), @happentime varchar(20), @callip varchar(20), @uname varchar(100), @upassword varchar(100)) as Insert into ftp(mca, ip, happentime, callip, uname, upassword) values(@mca, @ip, @happentime, @callip, @uname, @upassword)"};

for(int i=0; i<4; i++)
{
m_pCommand->CommandText= textpro[i];
m_pCommand->CommandType=adCmdText;
m_pCommand->Execute(NULL, NULL, adCmdText);
}
m_pCommand.Detach();
}
}
}
catch(_com_error e)
  {
_bstr_t bstrSource(e.Source());
_bstr_t bs = _bstr_t("   Error:   ")
+ _bstr_t(e.Error())
+ _bstr_t("   Msg:   ")
+ _bstr_t(e.ErrorMessage())
+ _bstr_t("   Description:   ")
+ _bstr_t(e.Description());

AfxMessageBox(bs + bstrSource);   
//AfxMessageBox("数据库连接失败!"); return FALSE;
} 请问如何在我上面的代码中加入判断?

解决方案 »

  1.   

    MS SQL SERVER 数据库:
    在每个数据库的 sysobjects 表中记录了表、存储过程等对象,联机帮助里你查查看。
      

  2.   


    我的意思是直接查询有难度的话,可以用捕获异常的方法知道该存储过程不存在..直接查的话,不知你用的什么数据库,ORACLE的话,执行一条SQL语句就可以查询了:
    select * from all_objects where object_type = 'PROCEDURE' and object_name='存储过程名(大写)';