[JAVA] SQL-INSERT INTO

Noerknhar

Gesperrt
Mitglied seit
20.01.2004
Beiträge
3.179
Renomée
45
Standort
Oldenburg/Niedersachsen
Code:
try
            {
            kekse++;
            kekse--;
            String sqllehrer90=null;
		        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                String url90 = "jdbc:odbc:Lehrererfassung"; 
                Connection con90 = DriverManager.getConnection(url90); 
                Statement stmt90 = con90.createStatement(); 
                //sqllehrer90 = "INSERT INTO Lehrer VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                PreparedStatement pstmt = con90.prepareStatement("INSERT INTO Lehrer VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                System.out.println("1");
                pstmt.setString(1, String.valueOf(kekse));
                System.out.println("2");
                pstmt.setString(2, tfvorname.getText());
                System.out.println("3");
                pstmt.setString(3, tfname.getText());
                System.out.println("4");
                pstmt.setString(4, tfgeboren.getText());
                System.out.println("5");
                pstmt.setString(5, tfgehaltsklasse.getText());
                System.out.println("6");
                pstmt.setString(6, tfeinstellungsdatum.getText());
                System.out.println("7");
                pstmt.setString(7, tfseminarbeginn.getText());
                System.out.println("8");
                pstmt.setString(8, tfdienstantritt.getText());
                System.out.println("9");
                pstmt.setString(9, tfversetztnachleer.getText());
                if (teilzeitja.getState()==true)
                {
                    pstmt.setString(10, "true");
                }
                else
                {
                    pstmt.setString(10, "false");
                }
                System.out.println("10");
                pstmt.setString(11, tfstunden.getText());
                System.out.println("11");
                System.out.println("suxX");
            }
            catch(Exception e)
            {
                System.out.println(e);
            }

fehler: arrayoutofboundsexception. array?! WTF?! seht ihr da nen array?! *noahnung*

zur erklärung: 10. table eintrag in der (access-)db is ja/nein, der 11. is zahl, rest text, der erste autowert.
er kommt bis System.out.println("10") - und ich habe absolut null peile, warum und sowieso und überhaupt. die daten, die übertragen werden sollen, kommen aus textfeldern, sind folglich string, kann ja auch nur string übergeben.

bitte dringlichst um hilfe, möcht das endlich fertig haben...

edit: kay, fehler gefunden, ein ? zu wenig.
aber neues problem.

es läuft problemlos durch, nur fügt es der datenbank nichts an (was ja eigtl der sinn der sache war)...
irgendjemand nen lösungsvorschlag?
 
Zuletzt bearbeitet:
Wie wärs mit einem
Code:
pstmt.execute();

Damit wird das vorbereitete Statement ausgeführt.
 
Wie wärs mit einem
Code:
pstmt.execute();

Damit wird das vorbereitete Statement ausgeführt.

d.h. nach jedem pstmt.setString(); einmal pstmt.execute();?
oder nur einmal am ende?

sorry, nach 5std java proggen gestern und nheute wieder 2std bin ich geistig einfach nichtmehr auf der höhe :)
 
Am Ende, wenn Dein Statement komplettotuto Vorbereitet ist.
 
Code:
try
            {
            kekse++;
            kekse--;
            String sqllehrer90=null;
		        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                String url90 = "jdbc:odbc:Lehrererfassung"; 
                Connection con90 = DriverManager.getConnection(url90); 
                Statement stmt90 = con90.createStatement(); 
                //sqllehrer90 = "INSERT INTO Lehrer VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                PreparedStatement pstmt = con90.prepareStatement("INSERT INTO Lehrer VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                System.out.println("1");
                pstmt.setString(1, String.valueOf(kekse));
                System.out.println("2");
                pstmt.setString(2, tfvorname.getText());
                System.out.println("3");
                pstmt.setString(3, tfname.getText());
                System.out.println("4");
                pstmt.setString(4, tfgeboren.getText());
                System.out.println("5");
                pstmt.setString(5, tfgehaltsklasse.getText());
                System.out.println("6");
                pstmt.setString(6, tfeinstellungsdatum.getText());
                System.out.println("7");
                pstmt.setString(7, tfseminarbeginn.getText());
                System.out.println("8");
                pstmt.setString(8, tfdienstantritt.getText());
                System.out.println("9");
                pstmt.setString(9, tfversetztnachleer.getText());
                if (teilzeitja.getState()==true)
                {
                    pstmt.setString(10, "1");
                }
                else
                {
                    pstmt.setString(10, "0");
                }
                System.out.println("10");
                pstmt.setString(11, tfstunden.getText());
                System.out.println("11");
                System.out.println("suxX");
                System.out.println(tfstunden.getText());
                pstmt.execute();
                System.out.println("allessefunzt imo");
            }
            catch(Exception e)
            {
                System.out.println(e);
            }

nach der ausgabe von tfstunden.getText() kam folgendes:
java.sql.SQLException: General Error

mittlerweile sind ALLE dinger in der db auf Text umgestellt, bis auf die nummer (das erste übergebene, primärschlüssel), was autowert ist...

ich verzweifel...
 
Code:
try
            {
            kekse++;
            kekse--;
            String sqllehrer90=null;
		        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                String url90 = "jdbc:odbc:Lehrererfassung"; 
                Connection con90 = DriverManager.getConnection(url90); 
                //sqllehrer90 = "INSERT INTO Lehrer VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                PreparedStatement pstmt = con90.prepareStatement(
                "INSERT INTO Lehrer(Vorname, Name, geboren, Gehaltsklasse, Einstellungsdatum, Seminarbeginn, Dienstantritt, versetzt_nach_Leer, Teilzeit, Stunden) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                //pstmt.setString(1, String.valueOf(kekse));
                pstmt.setString(1, tfvorname.getText());
                pstmt.setString(2, tfname.getText());
                pstmt.setString(3, tfgeboren.getText());
                pstmt.setString(4, tfgehaltsklasse.getText());
                pstmt.setString(5, tfeinstellungsdatum.getText());
                pstmt.setString(6, tfseminarbeginn.getText());
                pstmt.setString(7, tfdienstantritt.getText());
                pstmt.setString(8, tfversetztnachleer.getText());
                if (teilzeitja.getState()==true)
                {
                    pstmt.setString(9, "1");
                }
                else
                {
                    pstmt.setString(9, "0");
                }
                pstmt.setString(10, tfstunden.getText());
                System.out.println("suxX");
                pstmt.executeUpdate();
                System.out.println("allessefunzt imo");
            }
            catch(Exception e)
            {
                System.out.println(e);
            }

danke für die hilfe :)

8) 8) 8) 8)
 
Zurück
Oben Unten