2013-12-23 8 views
-2

Эта часть должна добавить поезд в таблицу TRAININFO в моей базе данных. Я должен использовать mysql.Почему этот код работает неправильно?

Так что есть некоторые ограничения, которые я должен видеть перед добавлением поезда.

  1. jTextField1.getText(); TrainNo. не должно быть больше 6 символов, и оно должно быть целым числом.
  2. jTextField2.getText(); TrainName. Не должно быть более 30 символов.
  3. jTextField10,jTextField12 имеют Дептет и время araivaltime соответственно. Он имеет 5 символов, «hr: mn». Поэтому я должен проверить, 'hr' < = 24 и 'mn' < = 59.
  4. Если значение jTextField3.getText()==0 (количество вагонов ac1), то поезд для вагонов ac1 (tfac1) также должен быть равен 0.

Учитывая это, я попытался его кодировать. но это не сработает.

когда я запускаю это сообщение об ошибке.

Пожалуйста, скажите мне, где я ошибаюсь.

StackTrace: [Ljava.lang.StackTraceElement; @ e596c9

хорошо Вот как это должно работать:

String m="-",t="-",w="-",th="--",f="-",st="--",s="-",runson; 
if(jCheckBox1.isSelected()==true) 
{ 
    m="m"; 
} 

if(jCheckBox2.isSelected()==true) 
{ 
    t="t"; 
} 

if(jCheckBox3.isSelected()==true) 
{ 
    w="w"; 
} 

if(jCheckBox4.isSelected()==true) 
{ 
    th="th"; 
} 

if(jCheckBox5.isSelected()==true) 
{ 
    f="f"; 
} 

if(jCheckBox6.isSelected()==true) 
{ 
    st="st"; 
} 

if(jCheckBox7.isSelected()==true) 
{ 
    s="s"; 
} 

runson=m+t+w+th+f+st+s; 

int h1=Integer.valueOf(jTextField10.getText().substring(0,2)); 

int mins1=Integer.valueOf(jTextField10.getText().substring(3,5)); 

int h2=Integer.valueOf(jTextField12.getText().substring(0,2)); 

int mins2=Integer.valueOf(jTextField12.getText().substring(2,3)); 

String time1=jTextField10.getText().substring(0,2)+jTextField10.getText().substring 

(2,3)+jTextField10.getText().substring(3,5); 

String time2=jTextField12.getText().substring(0,2)+jTextField12.getText().substring 

(2,3)+jTextField12.getText().substring(3,5); 

String tfac1=jTextField13.getText(); 

String tfac2=jTextField14.getText(); 

String tfac3=jTextField15.getText(); 

String tfsl=jTextField16.getText(); 

if(Integer.valueOf(jTextField3.getText())==0) 

{ 
    tfac1="0"; 

} 
if(Integer.valueOf(jTextField4.getText())==0) 
{ 
    tfac2="0"; 
} 
if(Integer.valueOf(jTextField5.getText())==0) 
{ 
    tfac3="0"; 
} 
if(Integer.valueOf(jTextField6.getText())==0) 
{ 
    tfsl="0"; 
} 
try 
{ 
    Class.forName("java.sql.DriverManager"); 

Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bvdb","root","enter"); 

Statement stm=con.createStatement(); 

    int n=jTextField1.getText().trim().length(); 
int m=jTextField2.getText().trim().length(); 

if(n<=6 && m<=30 && h1<=24 && h2<=24 && mins1<=59 && mins2<=59) 

//This should check the constraints(1,2,3).if the condition is true the following statement will be executed ..else the catch block should be executed. But this doesn't seem to happen when i run the code. There is always an Exception raised.// 

{ 

String q="INSERT INTO TRAININFO VALUE ("+jTextField1.getText()+",'"+jTextField2.getText()+"','"+jTextField9.getText()+"','"+time1+"','"+jTextField11.getText()+"','"+time2+"','"+runson+"',"+tfac1+","+tfac2+ ","+tfac3+","+tfsl+","+jTextField3.getText()+","+jTextField4.getText()+","+jTextField5.getText()+","+jTextField6.getText()+")"; 

stm.executeUpdate(q); 

System.out.print("ADDED"); 

    } 


    } 
    catch (Exception e) 
    { 

JOptionPane.showMessageDialog(this,"Enter valid details"); 

} 
+1

, пожалуйста, уделите время форматированию кода! – Baby

+1

Пожалуйста, узнайте о петлях, прежде чем продолжить путь. –

+1

Включите трассировку стека в свой вопрос. Прочтите свой собственный вопрос и подумайте, как он не описывает, что происходит неправильно. Нам нужна дополнительная информация, прежде чем мы сможем помочь. –

ответ

1

s всегда будет - если !jCheckBox7.isSelected(). Подумайте об этом, у вас есть:

if(something) { 
    ... 
} else { 
    s = ...; 
} 
if(something2) { 
    ... 
} else { 
    s = ...; 
} 
... 
if(somethingN) { 
    ... 
} else { 
    s = "-"; //This will always be executed if !somethingN 
} 

Вы могли бы хотеть иметь if.. else if вместо if ниже if.

Также обратите внимание на то, что сравнивать boolean, написав . Это может привести к проблемам, если вы, например, напишите = вместо ==. Просто напишите if(isTrue()) вместо if(isTrue() == true).

-1

В принципе, вам нужно разделить свой код на многие функции. Это сделает его более читаемым.

Ниже приведен пример структурирования вашего кода, а не полный рабочий код.

public void InsertTrainInfo() { 

    String runson = GetRunSon(); 
    Boolean validTime1 = IsTimeValid(jTextField10.getText()); 
    Boolean validTime2 = IsTimeValid(jTextField12.getText()); 
    String time1 = GetTheTime(jTextField10.getText()); 
    String time2 = GetTheTime(jTextField12.getText()); 

    String tfac1 = GetFact(jTextField13.getText()); 
    String tfac2 = GetFact(jTextField14.getText()); 
    String tfac3 = GetFact(jTextField15.getText()); 
    String tfsl = GetFact(jTextField16.getText()); 

    try { 
     Class.forName("java.sql.DriverManager"); 
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bvdb", "root", "enter"); 
     Statement stm = con.createStatement(); 

     if (jTextField1.getText().trim().length() <= 6 && jTextField2.getText().trim().length() <= 30 && validTime1 && validTime2) { 
      String q = "INSERT INTO TRAININFO VALUE (" + jTextField1.getText() + ",'" + jTextField2.getText() + "','" + jTextField9.getText() + "','" + time1 + "','" + jTextField11.getText() + "','" + time2 + "','" + runson + "'," + tfac1 + "," + tfac2 + "," + tfac3 + "," + tfsl + "," + jTextField3.getText() + "," + jTextField4.getText() + "," + jTextField5.getText() + "," + jTextField6.getText() + ")"; 
      stm.executeUpdate(q); 

      ResetFOrm(); 
     } 


    } catch (Exception e) { 
     GetValidDetails(); 
    } 
} 

Boolean IsTimeValid(String timetext) { 
    Boolean isOK = false; 
    try { 
     int h1 = Integer.valueOf(timetext.substring(0, 2)); 
     int mins1 = Integer.valueOf(timetext.substring(3, 5)); 
     isOK = (h1 <= 24 && mins1 <= 59); 
    } catch (Exception e) { 
     isOK = false; 
    } 
    return isOK; 
} 

String GetTheTime(String timetext) { 
    // do some basic length checks 
    return timetext.substring(0, 2) + timetext.substring(2, 3) + timetext.substring(3, 5); 
} 

String GetFact(String facttext) { 
    String fact = facttext; 
    if (Integer.valueOf(fact) == 0) { 
     fact = "0"; 
    } 
    return fact; 
} 

void ResetFOrm() { 
    jTextField1.setEditable(true); 
    jButton1.setEnabled(true); 
    jButton2.setEnabled(false); 
    jButton4.setEnabled(false); 
    jTextField2.setEditable(false); 
    jTextField9.setEditable(false); 
    jTextField10.setEditable(false); 
    jTextField11.setEditable(false); 
    jTextField12.setEditable(false); 
    jTextField13.setEditable(false); 
    jTextField14.setEditable(false); 
    jTextField15.setEditable(false); 
    jTextField16.setEditable(false); 
    jTextField3.setEditable(false); 
    jTextField4.setEditable(false); 
    jTextField5.setEditable(false); 
    jTextField6.setEditable(false); 
    jCheckBox1.setEnabled(false); 
    jCheckBox2.setEnabled(false); 
    jCheckBox3.setEnabled(false); 
    jCheckBox4.setEnabled(false); 
    jCheckBox5.setEnabled(false); 
    jCheckBox6.setEnabled(false); 
    jCheckBox7.setEnabled(false); 
    jTextField1.setText(""); 
    jTextField2.setText(""); 
    jTextField3.setText(""); 
    jTextField4.setText(""); 
    jTextField5.setText(""); 
    jTextField6.setText(""); 
    jTextField7.setText(""); 
    jTextField8.setText(""); 
    jTextField9.setText(""); 
    jTextField10.setText(""); 
    jTextField11.setText(""); 
    jTextField12.setText(""); 
    jTextField13.setText(""); 
    jTextField14.setText(""); 
    jTextField15.setText(""); 
    jTextField16.setText(""); 


} 

void GetValidDetails() { 
    JOptionPane.showMessageDialog(this, "Enter valid details"); 
    jTextField9.setEditable(true); 
    jTextField10.setEditable(true); 
    jTextField11.setEditable(true); 
    jTextField12.setEditable(true); 
    jTextField13.setEditable(true); 
    jTextField14.setEditable(true); 
    jTextField15.setEditable(true); 
    jTextField16.setEditable(true); 
    jTextField2.setEditable(true); 
    jTextField3.setEditable(true); 
    jTextField4.setEditable(true); 
    jTextField5.setEditable(true); 
    jTextField6.setEditable(true); 
    jCheckBox1.setEnabled(true); 
    jCheckBox2.setEnabled(true); 
    jCheckBox3.setEnabled(true); 
    jCheckBox4.setEnabled(true); 
    jCheckBox5.setEnabled(true); 
    jCheckBox6.setEnabled(true); 
    jCheckBox7.setEnabled(true); 
    jTextField2.setText(""); 
    jTextField3.setText(""); 
    jTextField4.setText(""); 
    jTextField5.setText(""); 
    jTextField6.setText(""); 
    jTextField7.setText(""); 
    jTextField8.setText(""); 
    jTextField9.setText(""); 
    jTextField10.setText(""); 
    jTextField11.setText(""); 
    jTextField12.setText(""); 
    jTextField13.setText(""); 
    jTextField14.setText(""); 
    jTextField15.setText(""); 
    jTextField16.setText(""); 
    jCheckBox1.setSelected(false); 
    jCheckBox2.setSelected(false); 
    jCheckBox3.setSelected(false); 
    jCheckBox4.setSelected(false); 
    jCheckBox5.setSelected(false); 
    jCheckBox6.setSelected(false); 
    jCheckBox7.setSelected(false); 


} 

String GetRunSon() { 
    String m = "-", t = "-", w = "-", th = "--", f = "-", st = "--", s = "-", runson; 
    if (jCheckBox1.isSelected()) { 
     m = "m"; 
    } 

    if (jCheckBox2.isSelected()) { 
     t = "t"; 
    } 

    if (jCheckBox3.isSelected()) { 
     w = "w"; 
    } 

    if (jCheckBox4.isSelected()) { 
     th = "th"; 
    } 

    if (jCheckBox5.isSelected()) { 
     f = "f"; 
    } 

    if (jCheckBox6.isSelected()) { 
     st = "st"; 
    } 

    if (jCheckBox7.isSelected()) { 
     s = "s"; 
    } 

    runson = m + t + w + th + f + st + s; 

    return runson; 
} 
+1

Это фактически не отвечает на вопрос. Также (@ user3090804), обратите внимание, что в Java вы должны использовать 'camelCase' для имен методов, а не' TitleCase', как используется в этом ответе. –

+0

@ Duncan ваши комментарии были открытием для глаз. Спасибо. – ray

Смежные вопросы