Anschluss an MSSQL

Fabi
2006-09-30
2010-05-11
  • Fabi - 2006-09-30

    Hallo,

    Ich bin zur Zeit in Indien mit einem Kunden der ein grosses Projekt hat.

    Ich möchte wissen ob es ein Library gibt um mich an eine SQL DB anzuschliessen.

    Untenstehend was ich machen will:

    1. Nur lesen... kein schreiben auf MSSQL

    2. Anschliessen an MSSQL, connection immer offen lassen da cyclisch gelesen wird (kein Close)

    3. Entdecken wenn Anschluss nicht möglich oder verloren... dann neu anschliessen.

    4. Select * from Table... (alle meine Infos sind bereits in einer View)

    4.1. Wissen wieviele Zeilen ich erhalten habe

    4.2. alles in ein Array schaufeln

    1. Alle Minuten das Array aktualisieren.

    2. CloseConnection erst beim runterfahren.

    Note: Die MSSQL DB liegt auf einem anderen PC.

    Note2: Ich werde MSSQL2000 verwenden... nicht 2005.

    Note3: Am liebsten JET oder ADO... besser als ODBC.

    Note4: Ich habe MDAC 2.8 auf dem PC.

    Zweite Frage:

    wie gross darf mein Array sein? Kann ich ein Array 2000x4 definieren?

    Wenn es klappt schicke ich Dir dann ein Bentchmark.

    Im Voraus besten Dank.

    Fabi

     
  • Anonymous - 2009-11-24

    Originally created by: plivelic@metaind.de

    Hallo,

    jetzt gibt es!

    Schaue: "http://www.metaind.de/metaind/de/software-shop"

    Ein beispiel mit der Funktion SQL_GET:

    PROGRAM SAMPLE_SQL_GET

    VAR

    bStart_Sample_1   : BOOL;             (* Activate CREATE TABLE *)
    
    Str_SQL           : STRING[4128];     (* SQL statement                *)
    
    sRes              : STRING[4128];     (* Reserve space for respons string from function SQL_GET *)
    
    iRows             : INT;              (* Affected rows                *)
    
    dwID              : DWORD;            (* ITEM_ID in table TARGETS     *)
    
    iTarget           : INT;              (* TARGET in table  TARGETS     *)
    
    sDate             : STRING[128];      (* DATUM in table  TARGETS      *)
    
    sText             : STRING[128];      (* DESCRIPTION in table TARGETS *)
    
    rc1,rc2,rc3,rc4   : INT;              (* Return codes                 *)
    
    iSQL_get_err      : INT := -1;        (* Error code, 0-OK             *)
    

    END_VAR

    ( Program start )

    IF bStart_Sample_1 THEN

    bStart_Sample_1 := FALSE;

    Str_SQL := 'select ITEM_ID, DATUM, DESCRIPTION, TARGET from TARGETS where ITEM_ID=123450';

    ( Str_SQL := 'select * from TARGETS'; )

    iSQL_get_err := SQL_GET (Str_SQL, ADR(iRows), ADR(sRes));

    IF iSQL_get_err <> 0 THEN

    PROTO_TIME (gfpProto, 'SAMPLE_SQL_GET(): We made a SQL error');
    
    RETURN;
    

    END_IF

    IF iRows = 0 THEN ( No row maches this where condition )

    PROTO_TIME (gfpProto, 'SAMPLE_SQL_GET(): iRows = 0');
    
    RETURN;
    

    END_IF

    PROTO_TIME (gfpProto, 'SQL_GET() war erfolgreich');

    ( Extract particular column values )

    rc1 := VAR_DWORD (sRes, 1, ADR(dwID)); ( iVar_no is sequence number of this column in select command )

    rc2 := VAR_STR (sRes, 2, ADR(sDate));

    rc3 := VAR_STR (sRes, 3, ADR(sText));

    rc4 := VAR_INT (sRes, 4, ADR(iTarget));

    IF rc4 = 1 THEN ( This value is not defined in data base )

    iTarget := -1; (* Target unknown - e.g. tage default target *)
    

    END_IF

    END_IF

    ( Program end )

    Es handelt sich hier um eine echte gelinkte Library ohne Zwischenkommunikation wie etwa TCP/IP or UDP.

    Gruß

    Boris

     
  • rudl - 2010-05-11

    http://www.sql4automation.com)

    Mit SQL4automation hat man aus der CoDeSys Steuerungen direkten zugriff auf Datenbanken. Mit der SQL Sprache kann man aus der Steuerung neue Datensätze anlegen, Datensätze verändern, Daten abfragen und löschen. Ausserdem können Prozeduren in der Datenbank aufgerufen werden. Es gibt bereits getestete Bibliotheken für CoDeSys V2 und V3, die sehr einfach ins Projekt eingebunden werden können. Die Performance mit den CoDeSys Steuerungen ist wirklich sehr gut! (4000 Variablen ~16‘500 Byte in 650ms).

     

Log in to post a comment.