2016-05-27 21 views
-2

Lässt mich diesen Fehler, wenn ich die Datei ausführen ... und ich weiß nicht, was zu tun ist .... jede Hilfe, scheint nicht falsch zu sein Syntax ...Variablen-ID wurde möglicherweise nicht initialisiert (JSP)

 Compiling 3 source files to C:\Users\ioann_000\Documents\NetBeansProjects\Project 
ΒΔ\build\generated\classes 
C:\Users\ioann_000\Documents\NetBeansProjects\Project 
ΒΔ\build\generated\src\org\apache\jsp\assets\jsp\create_002ddest_002dcode_0020_00282_0029_jsp.java:80: 
error: variable id might not have been initialized 
       int insert_ch=myStatement.executeUpdate("INSERT INTO Dest_has_Categories (Dest_idDest,Categories_idCategories) VALUES 
('"+id+"','"+cat[i]+"')"); 
                                     ^1 error C:\Users\ioann_000\Documents\NetBeansProjects\Project 
ΒΔ\nbproject\build-impl.xml:953: The following error occurred while 
executing this line: 
C:\Users\ioann_000\Documents\NetBeansProjects\Project 
ΒΔ\nbproject\build-impl.xml:296: Compile failed; see the compiler 
error output for details. BUILD FAILED (total time: 1 second) 

Der Code

<% 


    String id8=request.getParameter("id8"); //Country field 
    String id9=request.getParameter("id9"); //City field 
    String id10=request.getParameter("id10"); //URL field 
    int id; 

      Class.forName("com.mysql.jdbc.Driver"); 
      String myDatabase = "jdbc:mysql://localhost:3306/project_app?user=root&password=1234"; 
      Connection myConnection = DriverManager.getConnection(myDatabase); 
      Statement myStatement = myConnection.createStatement(); 

      String sqlInsert = "INSERT INTO dest(Country,City,URL) VALUES ('"+id8+"', '"+id9+"','"+id10+"')"; 
      myStatement.executeUpdate(sqlInsert); 
      ResultSet rs = myStatement.executeQuery("SELECT idDest FROM dest WHERE Country='"+id8+"' AND City='"+id9+"' AND URL='"+id10+"'"); 
      while (rs.next()) { 
       id=rs.getInt(1); 
      } 
      String cat[]=request.getParameterValues("dest1"); 

      for(int i=0;i<cat.length;i++) 
      { 
       int insert_ch=myStatement.executeUpdate("INSERT INTO Dest_has_Categories (Dest_idDest,Categories_idCategories) VALUES ('"+id+"','"+cat[i]+"')"); 

      } 
+0

Hat eine der angegebenen Antworten Ihr ursprüngliches Problem gelöst? – gmiley

Antwort

1

Sie deklarieren int id;, aber Sie setzen nie einen Wert darauf. Sie müssen initialisieren (oder einen Wert festlegen), bevor Sie es verwenden können.

String id8=request.getParameter("id8"); //Country field 
String id9=request.getParameter("id9"); //City field 
String id10=request.getParameter("id10"); //URL field 
int id = -1; 

Class.forName("com.mysql.jdbc.Driver"); 
String myDatabase = "jdbc:mysql://localhost:3306/project_app?user=root&password=1234"; 
Connection myConnection = DriverManager.getConnection(myDatabase); 
Statement myStatement = myConnection.createStatement(); 

String sqlInsert = "INSERT INTO dest(Country,City,URL) VALUES ('"+id8+"', '"+id9+"','"+id10+"')"; 
myStatement.executeUpdate(sqlInsert); 
ResultSet rs = myStatement.executeQuery("SELECT idDest FROM dest WHERE Country='"+id8+"' AND City='"+id9+"' AND URL='"+id10+"'"); 
while (rs.next()) { 
    id=rs.getInt(1); 
} 
String cat[]=request.getParameterValues("dest1"); 

if(id > -1) 
{ 
    int insert_ch; 
    for(int i=0;i<cat.length;i++) 
    { 
     insert_ch=myStatement.executeUpdate("INSERT INTO Dest_has_Categories (Dest_idDest,Categories_idCategories) VALUES ('"+id+"','"+cat[i]+"')"); 
    } 
} 

Versuchen Sie das oben genannte, ich änderte es, so sollte es gut für Sie arbeiten. Ich habe auch die Deklaration von int insert_ch außerhalb der for-Schleife verschoben, sonst wird es woanders unbrauchbar, es sei denn, Sie werden mehr Sachen nur innerhalb der Schleife mit insert_ch tun.

+0

2. Option Fehler: für (int i = 0; i JHk1821

+0

Versuchen Sie den letzten Vorschlag meiner Antwort hinzugefügt. Sie müssen sicherstellen, dass Sie das tun, wo immer Sie versuchen, ID zu verwenden. Das grundlegende Problem besteht darin, dass Sie nicht sicherstellen, dass entweder 'id' initialisiert wird oder Ihr Code davor schützt, dass er im Fall von nicht initialisierten verwendet wird. – gmiley

+0

if (id! = Null) sagt mir wieder unvergleichliche Typen – JHk1821

0

Wie Sie "id" in einer while-Schleife setzen, kann es nicht initialisiert, wenn resultset leer ist. Dies ist der Grund, warum Sie diesen Compilerfehler sehen. Initialisieren Sie die ID bei der Deklaration und Sie sollten in Ordnung sein. -Amit

+0

Was schlagen Sie vor? – JHk1821

+1

@JohnV Er schlug vor, es bei der Deklaration zu initialisieren. – RealSkeptic

0
int id; 
... 
ResultSet rs = myStatement.executeQuery("SELECT idDest FROM dest WHERE Country='"+id8+"' AND City='"+id9+"' AND URL='"+id10+"'"); 
while (rs.next()) { 
    id=rs.getInt(1); 
} 
... 
for(int i=0;i<cat.length;i++) 
{ 
    int insert_ch=myStatement.executeUpdate("INSERT INTO Dest_has_Categories (Dest_idDest,Categories_idCategories) VALUES ('"+id+"','"+cat[i]+"')"); 
} 

Wenn die Abfrage zurückgeben keine Zeilen die Variable id nie einen Wert bekommen.

+0

was schlagen Sie vor? – JHk1821

+1

Auch wenn Ergebniszeilen gefunden werden, ist der Wert von id der idDest der letzten gefundenen Zeile. Ist das, was wirklich gewollt ist? Was ist, wenn der idDest-Wert der Ergebnismengenzeilen nicht alle gleich sind? Können Sie garantieren, dass die Abfrage die Treffer immer in der gleichen Reihenfolge zurückgibt? Du sortierst sie nicht, damit sie in beliebiger Reihenfolge zurückkommen können. – FredK

0
Id=rs.getInt(1); //here 

Id-Feld ist Null oder leer Versuchen Sie zu drucken oder eine Warnung, um zu sehen, welcher Wert in ID kommt. Das ist der Grund, warum Variable ID möglicherweise nicht initialisiert wird

+0

kannst du mir einen Vorschlag schreiben? – JHk1821

Verwandte Themen