INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Kommunikation zwischen Programmen/SQL



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

11.09.2017, 07:43
Beitrag #1

Appa Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: Mar 2015

2017
2014
DE


Deutschland
Kommunikation zwischen Programmen/SQL
Guten morgen Zusammen,

ich erläutre mal mein Hauptproblem/Aufgabe um dann zu meinem Lösungsansatzproblem zu kommen.
Ich nutze LabVIEW um an verschiedenen PC's Daten in eine SQL-Datenbank zu schreiben, gleichzeitig wird eine JPG Datei auf einem Server erstellt. Diese JPG Datei muss ich der SQL-Zeile wieder zuordnen können. Das funktioniert auch astrein mittels einer eindeutigen ID mit Primary Key, allerdings nicht mit Autoinkrement da ich im Vorfeld die neue ID nicht weiss und die JPG Datei aber erstellen muss. Jetzt kommt das Problem, wenn 2 PC's gleichzeitig in die SQL Datenbank schreiben überschreibt ein PC das Bild. Muss ja auch so Passieren, beide PC's schauen in der SQL Datenbank nach der Größten Zahl und addieren 1 dazu um die neue Zeile zu erstellen.

Meine Lösungsidee wäre jetzt eine Art Dienst zu erstellen der von den PC's mit Inhalt der neuen Zeile angesprochen wird um dann den SQL Eintrag vorzunehmen. Jetzt zur Frage: mach ich das am besten mittels TCP/IP oder gibt es eine besser alternative. Versuche mich grad an TCP aber ich habe es noch nicht so wirklich raus damit. Da der Dienst ja permanent auf Werte warten muss dazu von unterschiedlichen IP Adressen.

grüße Appa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.09.2017, 07:57
Beitrag #2

Freddy Offline
LVF-Stammgast
***


Beiträge: 460
Registriert seit: Aug 2008

2017, NXG 2.0 BETA
1996
DE

76275
Deutschland
RE: Kommunikation zwischen Programmen/SQL
Hallo Appa,
so ein ähnliches Problem habe ich mit einer Tabelle in der nur ein Datensatz steht, gelöst.
Der zugreift inkrementiert den Datensatz. Damit hat man eine eineindeutige Zahl die man als Index verwenden kann.

Gruß
Freddy

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2017, 08:00
Beitrag #3

Appa Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: Mar 2015

2017
2014
DE


Deutschland
RE: Kommunikation zwischen Programmen/SQL
(11.09.2017 07:57 )Freddy schrieb:  Hallo Appa,
so ein ähnliches Problem habe ich mit einer Tabelle in der nur ein Datensatz steht, gelöst.
Der zugreift inkrementiert den Datensatz. Damit hat man eine eineindeutige Zahl die man als Index verwenden kann.

Gruß
Freddy

Hi Freddy,

kann dir gerade nicht ganz Folgen Blink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2017, 08:10
Beitrag #4

Freddy Offline
LVF-Stammgast
***


Beiträge: 460
Registriert seit: Aug 2008

2017, NXG 2.0 BETA
1996
DE

76275
Deutschland
RE: Kommunikation zwischen Programmen/SQL
in Deiner SQL Datenbank eine Tabelle "Indexzaehler" mit einer Spalte "Zahl" erstellen.
Datensatz Zahl lesen und Zahl +1 Datensatz überschreiben.
Die gelesene Zahl als Index für Deine Tabelle verwenden.

Gruß
Freddy

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2017, 08:12 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2017 08:15 von jg.)
Beitrag #5

jg Offline
CLD & CLED
LVF-Team

Beiträge: 14.975
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Kommunikation zwischen Programmen/SQL

Akzeptierte Lösung

Das ist doch gar kein Problem. Es gibt SQL-Kommandos, mit denen du Verbindungsspezifisch den letzten erzeugten AutoIndex abfragen kannst.

Bei MySQL lautet die entsprechende Abfrage z.B.
Code:
SELECT LAST_INSERT_ID();

Bei MS-SQL funktionieren
Code:
SELECT @@IDENTITY; ## oder
SELECT SCOPE_IDENTITY();

Also keine Klimmzüge, Tabelle mit AutoIncrement-Spalte erstellen, Bilder eintragen (ohne selber den AutoIndex zu erzeugen), und einfach korrekt nach dem Eintrag die erzeugte ID abfragen.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2017, 08:26 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2017 08:29 von Appa.)
Beitrag #6

Appa Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: Mar 2015

2017
2014
DE


Deutschland
RE: Kommunikation zwischen Programmen/SQL
(11.09.2017 08:10 )Freddy schrieb:  in Deiner SQL Datenbank eine Tabelle "Indexzaehler" mit einer Spalte "Zahl" erstellen.
Datensatz Zahl lesen und Zahl +1 Datensatz überschreiben.
Die gelesene Zahl als Index für Deine Tabelle verwenden.

Gruß
Freddy

Hi Freddy,

das mache ich bisher eigentlich genau so! Nur wenn beide das gleichzeitig ausführen komme ich wieder auf das gleiche Problem

(11.09.2017 08:12 )jg schrieb:  Das ist doch gar kein Problem. Es gibt SQL-Kommandos, mit denen du Verbindungsspezifisch den letzten erzeugten AutoIndex abfragen kannst.

Bei MySQL lautet die entsprechende Abfrage z.B.
Code:
SELECT LAST_INSERT_ID();

Bei MS-SQL funktionieren
Code:
SELECT @@IDENTITY; ## oder
SELECT SCOPE_IDENTITY();

Also keine Klimmzüge, Tabelle mit AutoIncrement-Spalte erstellen, Bilder eintragen (ohne selber den AutoIndex zu erzeugen), und einfach korrekt nach dem Eintrag die erzeugte ID abfragen.

Gruß, Jens

Auch hier glaube ich nicht dass das fehlerfrei funktionieren wird. Wie gesagt wenn das Simultan läuft gäbe es die Möglichkeit das beide die gleiche Zahl abrufen. Also PC1 schreibt 233 PC2 schreibt 234 und PC1 Holt die jüngsten Daten um das Bild zu erstellen und bekommt 234 zurück wie PC2 dann auch...
Oder wie es jetzt ist.
PC1 lädt Max Wert/letzten Wert "232" inkrementiert um 1 und erstellt "233" mit Bild "233", PC2 hat währenddessen ebenfalls Max Wert geladen "232" um 1 inkrementiert und erstellt "233" mit Bild "233".
Ich denke nur wenn ich ein Flaschenhals im Stil von einem Übergabeprogramm oder eine Art reservierung bis Bild Erstellt hinbekomme, passiert dieser Fehler nicht mehr.
Dazu möchte ich es verhindern einen SQL Autoinkrement zu benutzen... Ich müsste verdammt viel umschreiben bzw. alles neu schreiben. Ich nutze manchmal einen negativ Inkrement um diverse Einträge später zu selektieren.

grüße Appa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.09.2017, 08:36
Beitrag #7

jg Offline
CLD & CLED
LVF-Team

Beiträge: 14.975
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Kommunikation zwischen Programmen/SQL
(11.09.2017 08:26 )Appa schrieb:  Auch hier glaube ich nicht dass das fehlerfrei funktionieren wird. Wie gesagt wenn das Simultan läuft gäbe es die Möglichkeit das beide die gleiche Zahl abrufen. Also PC1 schreibt 233 PC2 schreibt 234 und PC1 Holt die jüngsten Daten um das Bild zu erstellen und bekommt 234 zurück wie PC2 dann auch...
Oder wie es jetzt ist.
Doch, das funktioniert! Diese Abfragen sind Instanz-Spezifisch, d.h. sie geben für die jeweilige Datenbank-Verbindung den letzten erzeugten AutoIndex zurück. PC1 wird bei dieser Abfrage also 233, PC2 wird 234 zurückbekommen. So schlau sind die Datenbank-Engines.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2017, 08:41
Beitrag #8

Freddy Offline
LVF-Stammgast
***


Beiträge: 460
Registriert seit: Aug 2008

2017, NXG 2.0 BETA
1996
DE

76275
Deutschland
RE: Kommunikation zwischen Programmen/SQL
Ich hab mal bei Microsoft nachgelesen.
Parallelitätskontrolltypen

Das könnte Dich interessieren.

Gruß
Freddy

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2017, 08:56
Beitrag #9

Appa Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: Mar 2015

2017
2014
DE


Deutschland
RE: Kommunikation zwischen Programmen/SQL
(11.09.2017 08:36 )jg schrieb:  
(11.09.2017 08:26 )Appa schrieb:  Auch hier glaube ich nicht dass das fehlerfrei funktionieren wird. Wie gesagt wenn das Simultan läuft gäbe es die Möglichkeit das beide die gleiche Zahl abrufen. Also PC1 schreibt 233 PC2 schreibt 234 und PC1 Holt die jüngsten Daten um das Bild zu erstellen und bekommt 234 zurück wie PC2 dann auch...
Oder wie es jetzt ist.
Doch, das funktioniert! Diese Abfragen sind Instanz-Spezifisch, d.h. sie geben für die jeweilige Datenbank-Verbindung den letzten erzeugten AutoIndex zurück. PC1 wird bei dieser Abfrage also 233, PC2 wird 234 zurückbekommen. So schlau sind die Datenbank-Engines.

Gruß, Jens

Hi Jens,

ahh jetzt versteh ich! Da hab ich einfach mal SQL unterschätzt. Dann mach ich mich gleich mal ans Werk, dank dir!

grüße Appa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Schnellste Kommunikation zwischen CRio und PC zur Synchronisation MarkG 5 1.325 22.12.2016 18:04
Letzter Beitrag: MarkG
  Serielle Kommunikation zwischen zwei Laptops Gerd Grote 34 5.066 19.09.2016 17:00
Letzter Beitrag: jg
  Datenaustausch zwischen zwei Programmen Michael5 1 1.563 05.07.2016 20:13
Letzter Beitrag: GerdW
  Probleme mit TCP Kommunikation zwischen Server & Client ChiefChill 3 2.495 10.03.2014 09:02
Letzter Beitrag: cb
  Keine Kommunikation zwischen LV - OPC - SPS Knusperbaer 9 3.837 05.05.2013 13:42
Letzter Beitrag: Knusperbaer
  Kommunikation zwischen NXT und Computer NXT 0 1.563 25.02.2012 10:39
Letzter Beitrag: NXT

Who read this thread?
1 User(s) read this thread:
Appa

Gehe zu: