2013-12-23 77 views
-2

这部分应该添加一列火车到我的数据库中的TRAININFO表。我必须使用mysql。为什么此代码无法正常工作?

因此,在添加火车之前我必须看到一些限制条件。

  1. jTextField1.getText();火车票。不应该超过6个字符,它应该是一个整数。
  2. jTextField2.getText(); TrainName。不应超过30个字符。
  3. jTextField10,jTextField12分别有Depttime和araivaltime。 它有5个字符,“hr:mn”所以我必须检查'hr'< = 24和'mn'< = 59。
  4. 如果jTextField3.getText()==0(ac1教练的数量)的值,则ac1教练的训练(tfac1)也应该是== 0。

记住这一点,我试图编码它。但它不起作用。

当我运行此有一个错误消息。

请告诉我我错了。

堆栈跟踪:[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

另请注意,通过书写== true来比较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

@邓肯你的评论让人大开眼界。谢谢。 – ray

相关问题