Domino 9 und frühere Versionen > Entwicklung
Notesdaten in einer SQL Datenbank schreiben
Abdelhadi Doujali:
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
Marinero Atlántico:
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
Abdelhadi Doujali:
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
eknori:
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 ...
Marinero Atlántico:
Hi Abdelhadi
--- Zitat von: Abdelhadi Doujali am 25.10.04 - 17:19:00 ---Aber wenn ich mit
Script auf die Datenquelle zugreiffe, um die Verbindung herzustellen, kommt die bereits genannte Fehlermeldung.
--- Ende Zitat ---
Ulrichs Beispielcode könnte erstmal ausreichen.
--- Zitat ---
zum Bsp wie machst du das mit Einfache SQL-inserts/updates.
--- Ende Zitat ---
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'")
--- Ende Code ---
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.
--- Ende Zitat ---
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();
--- Ende Code ---
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
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln