2016-03-03 63 views
1

创建部门表查询: 创建表的部门 ( 部门标识TINYINT(2)ZEROFILL NOT NULL AUTO_INCREMENT, DEPARTMENT_NAME VARCHAR(30)唯一的密钥, department_description文本, 主键(部门标识) );为什么我无法将用户输入添加到数据库中,前端是java,后端是mysql?

java代码: package hrmps;

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import javax.swing.*; 

class AddDepartment extends JPanel 
{ 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
String deptName=jTextField1.getText(); 
String deptDescription=jTextField2.getText(); 

Connection con=null; 
PreparedStatement statement=null; 
ResultSet rs=null; 

String query="Insert into department values (?,?)"; 


      try 
      { 
        Class.forName("com.mysql.jdbc.Driver"); 
       con=DriverManager.getConnection("jdbc:mysql:///hrmps?    zeroDateTimeBehavior=convertToNull","root","root"); 
       statement=con.prepareStatement(query); 
       statement.setString(1,deptName); 
       statement.setString(2,deptDescription); 
       statement.execute(); 

       int i=statement.executeUpdate(); 

       if(i>0) 

        JOptionPane.showMessageDialog(null, "Record added"); 


       else 

         JOptionPane.showMessageDialog(null, "Record couldn't  be added"); 


       con.close(); 
      } 

     catch(Exception ex) 
     { 
      System.out.println(ex.getMessage()); 
     } 


}   //end of method        

} //类

+2

当字符串不为空或空时,'isNullOrEmpty'实际返回'true'。考虑颠倒你的'return'语句。 – Berger

+0

@Berger是正确的,如果你切换'isNullOrEmpty()'的返回值,它就会工作。只是为了将来参考'if(boolean == true)'可以简化为'if(boolean)'不需要添加==真或假,因为当你查找一个假值时可以使用if(!boolean)' 。 –

+0

它仍然不起作用:(即使我正在删除整个isNullOrEmpty()方法。 –

回答

0
String deptName=jTextField1.getText(); 
String deptDescription=jTextField2.getText(); 

的端那些两个语句是任何方法。因此,它们在构造对象时执行,并且在用户有机会在文本字段中输入任何内容之前执行。

建立jButton1ActionPerformed方法的局部变量。只有当按钮被点击时,您必须阅读文本字段包含的内容。

顺便说一句,发布的代码中的所有字段应该是局部变量。当参数为空或空时,您的方法isNullOrEmpty返回false。这很混乱。

+0

谢谢你的回复。我已经初始化构造函数中的所有变量。这只是我只发布了代码的重要部分,顺便说一句,即使当我完全擦除isNullOrEmpty()方法时,它仍然不起作用 –

+0

两个字符串在构造函数中被初始化的事实恰恰是原因这个问题,正如我的答案所解释的那样,这两个字符串不应该是实例字段,它们应该是jButton1ActionPerformed的** local **变量,并且它们应该在jButton1ActionPerformed中初始化,当单击该按钮时不在构造函数中。用户界面甚至不可见,重新阅读答案 –

+0

对不起,但是,我也尝试过,它仍然不会将数据添加到dat基础它可以在PreparedStatement中出现一些语法错误吗? –

相关问题