Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

JSP INSERT INTO TABLE Problem mit mySQL

<< < (2/4) > >>

m3:
Wie bei Notes sollte man auch bei Java die Dokumentation lesen. Zu executeUpdate meint diese:

--- Zitat ---Returns:
    either the row count for INSERT, UPDATE or DELETE statements, or 0 for SQL statements that return nothing
--- Ende Zitat ---

CLI_Andreas_Schmidt:
jepp,

die Sache läuft jetzt. Sieht nur ganz anders aus, als alle Beispiele, die im Web zu finden sind und deswegen auch nicht laufen.

so ist es richtig:

    try {
   
Connection cn = null;
Statement  st = null;
Object rs = null;
Class.forName( sDbDrv );
cn = (Connection) DriverManager.getConnection( sDbUrl, sUsr, sPwd );
st = (Statement) cn.createStatement();
rs = st.executeUpdate( sSql );
      }

Ach ja und wer wissen möchte, wie das SQL Statement aussieht.

String sSql =  "INSERT INTO `globaladr`.`emailadr` ( `email`) VALUES ('"  + smailaddress + "')";

Auch völlig anders, als alle Beispiele die im Web zu finden sind.

:) Ich habe es dann mit dem Eclipse ausprobiert. Das war ein guter Tip.

flaite:
Schon merkwürdig.
Bei mir sehen SQL Inserts in java-code so aus:

--- Code: ---public void save(Verkaufstelle vks) {
vks.setVersion(1);
getSqlMapClientTemplate().insert("insertVerkaufstelle", vks);
}

--- Ende Code ---




Ralf_M_Petter:
Hallo Andreas!

Lies dir doch mal die Antworten auch durch die du bekommst. m3 hat dir doch schon geschrieben, dass executeUpdate kein Resultset sondern eine Zahl zurückliefert. In deiner letzten Version verwendest du aber noch immer rs. Solche falsch Benennung führt zu schwerwiegenden Problemen beim verstehen des Codes. Weiters würde ich dir unbedingt anraten bei SQL Statements diese nicht mit String concatenation zusammenzusetzen, da du dann unglaublich anfällig für SQL Injections bist. Solcher Code ist noch der Untergang des Webs. Bei jeglichen SQLStatments sollen Parameter ausschliesslich über Parametermarker gesetzt werden. Auch die Performance deiner Applikation wird es dir danken.

Grüße

Ralf

flaite:
So macht man das sowieso einfach nicht.

Gründe:
1. Es ist extrem ressourcen-fressend, sich bei jedem Laden der JSP-Seite eine neue Datenbank-Connection zu holen. Dafür gibt es Connection Pools.
2. sollte man aus verschiedenen Gründen besser PreparedStatement statt Statement verwenden (wie Ralf schon sagt).
3. sollte man in Java Anwendungen Code schichtenweise aufbauen.
Web-Layer -> Business Logik -> Datenbankzugriff
Sonst kann man keine Integrationstests schreiben.
4. gibts so Frameworks wie IBatis SQLMaps, hibernate oder EJB3 nicht zum Spaß. Und das ist keine esoterische Freakware. Vielmehr werden sie in praktisch jedem Java Projekt eingesetzt. Aus guten Gründen...

Gruß Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln