Autor Thema: Notesdaten in einer SQL Datenbank schreiben  (Gelesen 4164 mal)

Offline Abdelhadi Doujali

  • Frischling
  • *
  • Beiträge: 22
  • Ich liebe dieses Forum!
Notesdaten in einer SQL Datenbank schreiben
« am: 25.10.04 - 09:57:02 »
Hallo Freunde,
hat jemand schon mal Notesdaten in einer SQL Datenbank reingeschrieben (stichwort stored procedures)?
ich habe erstmal versucht die Connection zu der SQL Datenbank herzustellen, aber scheitert direkt am Anfang
(an dieser Stelle: Set LC_Conn = New LCConnection("sqlodbc")).
Ich bekomme den Fehler: error creating product object

Das ist mein Script:

Sub Click(Source As Button)
   
   Dim LC_Conn As LCconnection
   Set LC_Conn = New LCConnection("sqlodbc")
   Dim LC_S As New LCSession
   
      
   LC_Conn.Provider = "MEINESQLDB"
   LC_Conn.UserID = "conet"
   LC_Conn.Password = "ist_geheim"
      
   LC_Conn.Connect
   
   End Sub

Ich habe so ein Export nach SQL noch nie gemacht, wenn jemand mir hilft oder am Besten mir ein Bsp. zur Verfügung stellt (Wie ich das Schrittweise machen soll), wäre ich ihm dankbar.
Abdelhadi
« Letzte Änderung: 25.10.04 - 10:05:21 von Abdelhadi Doujali »

Marinero Atlántico

  • Gast
Re: Notesdaten in einer SQL Datenbank schreiben
« Antwort #1 am: 25.10.04 - 13:31:03 »
Um welche SQL Datenbank handelt es sich?
Wenn du über ODBC musst du auf Windows (?) noch eine DSN Datenquelle erstellen.
Das ist allerdings alles kein Problem.
Vielleicht bekommst du es über google raus oder es muss bestimmte Redbooks geben.
Wo weiss ich auch nicht genau.

Obwohl ich stored procedures für eine weitgehend unterschätzte Idee halte, brauchst du es nicht.
Die Stored Procedures müsstest du ja sowieso auf Seiten der RDBMS schreiben bzw. schreiben lassen.
Einfache SQL-inserts/updates reichen auch.

Gruß Axel

Offline Abdelhadi Doujali

  • Frischling
  • *
  • Beiträge: 22
  • Ich liebe dieses Forum!
Re: Notesdaten in einer SQL Datenbank schreiben
« Antwort #2 am: 25.10.04 - 17:19:00 »
Hi Axel,
danke erstmal für deine Antwort.
Das mit dem DSN Datenquelle klappt wunderbar, habe ich bereits eingestellt. Aber wenn ich mit
Script auf die Datenquelle zugreiffe, um die Verbindung herzustellen, kommt die bereits genannte Fehlermeldung.
Deswegen wenn du ein Bsp hast (Scriptmäßig) wäre nicht schlecht.
zum Bsp wie machst du das mit Einfache SQL-inserts/updates.
Aber es kann sein, dass ich diese stored procedures benötige, (schön wäre auch wenn du dazu auch ein Bsp hast.)
Ich denke es handelt sich um eine Microsoft Access DB, die auf einem sqlServer liegt.
Momantan habe ich 2 Porblem:
1) Verbindung per Script herstellen.
2) wenn 1) klappt, dann möchte ich zum testen einen einfachen Wert in einer Spalte einer SqlTabelle.

Gruss
Abdelhadi

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Notesdaten in einer SQL Datenbank schreiben
« Antwort #3 am: 25.10.04 - 17:24:42 »
DAnk verbesserter ForumsSuche habe ich eines meiner alten Postings gefunden.
http://www.atnotes.de/index.php?topic=4560.0

Wenn du erst einmal die Verbindung hast, sollte der Rest ( Lesen & Schreiben) eigentlich kein Problem mehr sein.

Frage: Dein Code läuft nicht zufälligerweise in einem scheduled agent und der Server als Dienst ?? Da gibt es nämlich Probleme bei der Verbindung ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Marinero Atlántico

  • Gast
Re: Notesdaten in einer SQL Datenbank schreiben
« Antwort #4 am: 25.10.04 - 19:13:49 »
Hi Abdelhadi

Aber wenn ich mit
Script auf die Datenquelle zugreiffe, um die Verbindung herzustellen, kommt die bereits genannte Fehlermeldung.
Ulrichs Beispielcode könnte erstmal ausreichen.
Zitat

zum Bsp wie machst du das mit Einfache SQL-inserts/updates.
Eigentlich sehr einfach. Traditionelle RDBMS-Zugriffsumgebungen wie ODBC oder das davon konzeptionell erst einmal abgeleitete JDBC schreiben SQL-Statements direkt in bestimmte Methoden von Klassen.
Eine konkrete update-Zeile sieht dann ungefähr so aus (vermutlich anders):
Code
connection.executeUpdate("INSERT INTO Persons (LastName, Address) VALUES ('Axel', 'St. Magdalenenstr. 94'")
Wichtig im Sinne von sehr wichtig ist, dass du am Ende nicht vergisst, die Connection zu schliessen!!!
Wenn man erst mal die Connection stehen hat, ist das sehr einfach.

Solange du aber nur eine einfache Tabelle zugreifen willst und einigermassen schnell Tippen kannst, ist es eigentlich relativ einfach und auch o.k. so.
Nimm einfach Ulrichs code und schreibe das entsprechende SQL da rein.
Ein einfaches SQL-Tutorial findest du hier:
http://www.w3schools.com/sql/default.asp
 
Leider ist dieser Code der Connection bekommen, SQL Statements, Connection schliessen immer ziemlich lang und
<ich_drifte_jetzt_ein_bischen_ab_und_das_brauch_dich_erstmal_nicht_zu_interessieren>
sind Daten in Relationalen Datenbanken ganz anders organisiert als man es in den heute üblichen objektbasierten oder objektrelationalen Programmiersprachen tun würde (in Relationen und stark "normalisiert", d.h. hauptsache nix doppelt).
Deshalb ist es manchmal ein bischen schwierig, ein Mapping zwischen den Variablen/Objekten auf der einen und der Datenstruktur in der RDBMS performant hinzubekommen.
</ich_drifte_jetzt_ein_bischen_ab_und_das_brauch_dich_erstmal_nicht_zu_interessieren>
Aus dem trivialen Grund (viel code) und dem abgedrifteten Grund diese ganze Aufregung von ca. 5 RDBMS Zugriffs-Umgebungen auf der Microsoft-Seite, ca zur Zeit 6 ernstzunehmenden auf der Java-Seite (EJB Entity Beans, vanilla-JDBC, IBatis, Hibernate, JDO, dicconnected Rowsets) und 2 auf der Notes Seite (LSX/ODBC, LEI). 

Zitat
Aber es kann sein, dass ich diese stored procedures benötige, (schön wäre auch wenn du dazu auch ein Bsp hast.)
Ich denke es handelt sich um eine Microsoft Access DB, die auf einem sqlServer liegt.
Stored Procedures sind kleine Programme, die du in die Datenbank reinkompilierst. Weiss gar nicht, ob MS-Access das überhaupt anbietet. In DB2, Oracle, PosgreSQL oder anderen besseren RDBMS schreibst du die in einer speziellen, herstellerproprietären SQL-Erweiterungssprache, die meistens irgendwie P-SQL und so ähnlich heissen. Heute kann man das auch oft mit Java machen. Stored Procedures sind meist sehr performant, da sie direkt in der Datenbank rumliegen.
Aber wie gesagt: Ich würde das mehr als weiteren Schritt in deiner Beschäftigung mit SQL tun. 
Von deinem Client Programm kannst du dann diese serverseitigen Procedures aufrufen:
Code
// in JDBC (Java)
CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");
ResultSet rs = cs.executeQuery();
Es gibt aber grundsätzlich nichts, was du nicht genauso mit den normalen SQL Befehlen Select, Update, Insert und Delete erreichen könntest (s. Tutorial-Link). Vielleicht geht es mit stored procedures schneller, aber das braucht dich erstmal nicht zu interessieren.
 

Microsoft Access und Microsoft SQL Server sind 2 unterschiedliche Produkte. Du meinst wahrscheinlich eine Access DB, die auf einem Windows Rechner liegt.

Gruss
Axel
« Letzte Änderung: 25.10.04 - 19:24:12 von Marinero Atlántico »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Notesdaten in einer SQL Datenbank schreiben
« Antwort #5 am: 25.10.04 - 19:27:10 »
ich denke es liegt an dem Konstrukt:

Zitat
   
LC_Conn.Provider = "MEINESQLDB"
   LC_Conn.UserID = "conet"
   LC_Conn.Password = "ist_geheim"
     
   LC_Conn.Connect

Obwohl es syntaktisch korekt ist, werden die Parameter nicht richtig an das Conn.Connect übergeben.

Ansonsten kann  ich mich Axel nur anschließen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz