Browse Source

* Applied patch from 21583

git-svn-id: trunk@20680 -
michael 13 years ago
parent
commit
a999648726
2 changed files with 34 additions and 23 deletions
  1. 13 6
      packages/dblib/src/dblib.pp
  2. 21 17
      packages/fcl-db/src/sqldb/mssql/mssqlconn.pp

+ 13 - 6
packages/dblib/src/dblib.pp

@@ -43,7 +43,11 @@ const
   {$IFDEF ntwdblib}'ntwdblib.dll'{$ENDIF}
   {$IFDEF ntwdblib}'ntwdblib.dll'{$ENDIF}
   {$IFDEF freetds} 'dblib.dll'   {$ENDIF}
   {$IFDEF freetds} 'dblib.dll'   {$ENDIF}
 {$ELSE}
 {$ELSE}
-  'libsybdb.so'
+  {$IFDEF DARWIN}
+    'libsybdb.dylib'
+  {$ELSE}
+    'libsybdb.so'
+  {$ENDIF}
 {$ENDIF}
 {$ENDIF}
   ;
   ;
 
 
@@ -150,6 +154,9 @@ const
 
 
   DBUNKNOWN = 2; //FALSE = 0, TRUE = 1
   DBUNKNOWN = 2; //FALSE = 0, TRUE = 1
 
 
+  // Error codes:
+  SYBEFCON = 20002;      // SQL Server connection failed
+
 type
 type
   PLOGINREC=Pointer;
   PLOGINREC=Pointer;
   PDBPROCESS=Pointer;
   PDBPROCESS=Pointer;
@@ -230,7 +237,7 @@ type
 
 
   DBVARYCHAR=packed record
   DBVARYCHAR=packed record
     len: {$IFDEF freetds}DBINT{$ELSE}DBSMALLINT{$ENDIF};
     len: {$IFDEF freetds}DBINT{$ELSE}DBSMALLINT{$ENDIF};
-    str: array[0..DBMAXCHAR-1] of CHAR;
+    str: array[0..DBMAXCHAR-1] of AnsiChar;
   end;
   end;
 
 
   DBERRHANDLE_PROC=function(dbproc: PDBPROCESS; severity, dberr, oserr:INT; dberrstr, oserrstr:PChar):INT; cdecl;
   DBERRHANDLE_PROC=function(dbproc: PDBPROCESS; severity, dberr, oserr:INT; dberrstr, oserrstr:PChar):INT; cdecl;
@@ -241,9 +248,9 @@ type
   {$ENDIF}
   {$ENDIF}
   DBCOL=record
   DBCOL=record
    	SizeOfStruct: DBINT;
    	SizeOfStruct: DBINT;
-   	Name: array[0..MAXCOLNAMELEN] of char;
-   	ActualName: array[0..MAXCOLNAMELEN] of char;
-   	TableName: array[0..MAXTABLENAME] of char;
+   	Name: array[0..MAXCOLNAMELEN] of AnsiChar;
+   	ActualName: array[0..MAXCOLNAMELEN] of AnsiChar;
+   	TableName: array[0..MAXTABLENAME] of AnsiChar;
    	Typ: SHORT;
    	Typ: SHORT;
    	UserType: DBINT;
    	UserType: DBINT;
    	MaxLength: DBINT;
    	MaxLength: DBINT;
@@ -396,7 +403,7 @@ begin
     if DBLibLibraryHandle = nilhandle then
     if DBLibLibraryHandle = nilhandle then
     begin
     begin
       RefCount := 0;
       RefCount := 0;
-      raise EInOutError.CreateFmt('Can not load DB-Lib client library "%s". Check your installation.'#13'%s',
+      raise EInOutError.CreateFmt('Can not load DB-Lib client library "%s". Check your installation.'+LineEnding+'%s',
                                   [libname, SysErrorMessage(GetLastOSError)]);
                                   [libname, SysErrorMessage(GetLastOSError)]);
     end;
     end;
 
 

+ 21 - 17
packages/fcl-db/src/sqldb/mssql/mssqlconn.pp

@@ -54,6 +54,7 @@ type
     FDBProc : PDBPROCESS;
     FDBProc : PDBPROCESS;
     Ftds    : integer;     // TDS protocol version
     Ftds    : integer;     // TDS protocol version
     Fstatus : STATUS;      // current result/rows fetch status
     Fstatus : STATUS;      // current result/rows fetch status
+    function CheckError(const Ret: RETCODE): RETCODE;
     procedure DBExecute(const cmd: string);
     procedure DBExecute(const cmd: string);
     function TranslateFldType(SQLDataType: integer): TFieldType;
     function TranslateFldType(SQLDataType: integer): TFieldType;
     function ClientCharset: TClientCharset;
     function ClientCharset: TClientCharset;
@@ -178,34 +179,19 @@ var
 
 
 function DBErrHandler(dbproc: PDBPROCESS; severity, dberr, oserr:INT; dberrstr, oserrstr:PChar):INT; cdecl;
 function DBErrHandler(dbproc: PDBPROCESS; severity, dberr, oserr:INT; dberrstr, oserrstr:PChar):INT; cdecl;
 begin
 begin
-  DBErrorStr:=DBErrorStr+#13+dberrstr;
+  DBErrorStr:=DBErrorStr+LineEnding+dberrstr;
   DBErrorNo :=dberr;
   DBErrorNo :=dberr;
   Result    :=INT_CANCEL;
   Result    :=INT_CANCEL;
 end;
 end;
 
 
 function DBMsgHandler(dbproc: PDBPROCESS; msgno: DBINT; msgstate, severity:INT; msgtext, srvname, procname:PChar; line:DBUSMALLINT):INT; cdecl;
 function DBMsgHandler(dbproc: PDBPROCESS; msgno: DBINT; msgstate, severity:INT; msgtext, srvname, procname:PChar; line:DBUSMALLINT):INT; cdecl;
 begin
 begin
-  DBMsgStr:=DBMsgStr+#13+msgtext;
+  DBMsgStr:=DBMsgStr+LineEnding+msgtext;
   DBMsgNo :=msgno;
   DBMsgNo :=msgno;
   Result  :=0;
   Result  :=0;
 end;
 end;
 
 
 
 
-function CheckError(const Ret: RETCODE): RETCODE;
-var E: EMSSQLDatabaseError;
-begin
-  if Ret=FAIL then
-  begin
-    E:=EMSSQLDatabaseError.Create(DBErrorStr+#13+DBMsgStr);
-    E.DBErrorCode:=DBErrorNo;
-    DBErrorStr:='';
-    DBMsgStr:='';
-    raise E;
-  end;
-  Result:=Ret;
-end;
-
-
 { TDBLibCursor }
 { TDBLibCursor }
 
 
 function TDBLibCursor.ReplaceParams(AParams: TParams; ASQLConnection: TMSSQLConnection): string;
 function TDBLibCursor.ReplaceParams(AParams: TParams; ASQLConnection: TMSSQLConnection): string;
@@ -245,6 +231,24 @@ begin
   Result := (Ftds=DBTDS_50) or (Ftds=DBTDS_42);
   Result := (Ftds=DBTDS_50) or (Ftds=DBTDS_42);
 end;
 end;
 
 
+function TMSSQLConnection.CheckError(const Ret: RETCODE): RETCODE;
+var E: EMSSQLDatabaseError;
+begin
+  if Ret=FAIL then
+  begin
+    if DBErrorStr = '' then
+      case DBErrorNo of
+        SYBEFCON: DBErrorStr:='SQL Server connection failed!';
+      end;
+    E:=EMSSQLDatabaseError.CreateFmt('%s Error %d: %s'+LineEnding+'%s', [ClassName, DBErrorNo, DBErrorStr, DBMsgStr]);
+    E.DBErrorCode:=DBErrorNo;
+    DBErrorStr:='';
+    DBMsgStr:='';
+    raise E;
+  end;
+  Result:=Ret;
+end;
+
 constructor TMSSQLConnection.Create(AOwner: TComponent);
 constructor TMSSQLConnection.Create(AOwner: TComponent);
 begin
 begin
   inherited Create(AOwner);
   inherited Create(AOwner);