poniedziałek, 17 stycznia 2011

Wykonanie zapytania na bazie MS-SQL w InstallScript

Funkcja wykonuje zapytanie SQL i zwraca wartości z pierwszej kolumny w zmiennej "svWynik"; Funkcja zwraca true/false w przypadku poprawnego/błędnego wykonania zapytania.

function BOOL QuerySQL(sSQL,sServerName, sDBName, sDriver, bTrustedConn, 
sUserName, sUserPwd, svWynik, bLog)
 OBJECT objConn, objRST, pADORecordSetObj,adoCommand; 
 STRING sTekst, sConnString;         
 STRING  szADOConnObjID,szADORecordSetObjID; 
 STRING szError;
 BOOL bReturn;
begin
 bReturn = FALSE;
 
    if (sDriver == "") then sConnString = "Provider=sqloledb;Persist Security Info=False;";
                    else sConnString = "Driver={" + sDriver + "};Persist Security Info=False;";
    endif;
    
    if (bTrustedConn) then
 sConnString = sConnString + "server=" + sServerName + ";";
 sConnString = sConnString + "database=" + sDBName + ";";
 sConnString = sConnString + "Trusted_connection=Yes";
else
 sConnString = sConnString + "server=" + sServerName + ";";
 sConnString = sConnString + "uid=" + sUserName + ";";
 sConnString = sConnString + "pwd=" + sUserPwd + ";";
 sConnString = sConnString + "database=" + sDBName;
endif;
 
    try
 szADOConnObjID = "ADODB.Connection";
 set objConn = CreateObject(szADOConnObjID);         
    
 if (IsObject(objConn)) then 
objConn.ConnectionString = sConnString;
    objConn.Open;                              
    szADORecordSetObjID = "ADODB.Recordset";
    set pADORecordSetObj = CreateObject(szADORecordSetObjID);
    
    pADORecordSetObj.CursorType = 3;    
    pADORecordSetObj.ActiveConnection = objConn;    
    pADORecordSetObj.Open(sSQL);    
 if ((pADORecordSetObj.RecordCount >= 1)||(pADORecordSetObj.RecordCount = -1)) then
    while (!pADORecordSetObj.EOF) 
  svWynik =  pADORecordSetObj(0);
   pADORecordSetObj.MoveNext;          
    endwhile; 
    
 if (StrLength(svWynik)>0) then bReturn = TRUE;
      else bReturn = FALSE;
 endif;  
    
 if ((bLog)&&(!bReturn)) then WriteLog(2," Wynik zapytania jest pusty"); endif;  
 else
 bReturn = FALSE; 
 endif;                                          
    
 set pADORecordSetObj = NOTHING;
 objConn.Close;
   
 else
     if (bLog) then WriteLog(1,"Nie moża utworzyć obiektu połączenia ADODB.Connection do "+sDBName); endif;  
 endif;
  
 set objConn = NOTHING;
 set objRST  = NOTHING;
  
 catch  
    if (bLog) then WriteLog(1,"Błąd wykonania zapytania SQL"); endif;  
 endcatch;
                      
 return (bReturn);
end;   

Brak komentarzy:

Prześlij komentarz