Java Mysql 空指针异常
Java Mysql Nullpointer exception
我正在尝试使用 PreparedStatement
将数据输入 MySQL table,问题是当它到达 [=16] 时我得到 NullPointerException
=]行。
Conexion con = new Conexion();
Connection reg = con.conexion();
Integer ced;
boolean f = false;
String nom, ape, email, dir, tel, codtel, telefono;
Date fechareg = new Date();
String sql;
ced = Integer.getInteger(CedulaField.getText());
nom = NombreField.getText();
ape = ApellidoField.getText();
email = emailField.getText();
dir = dirArea.getText();
tel = TelField.getText();
codtel = (String) TelBox.getSelectedItem();
telefono = codtel + tel;
tel = TelField.getText();
sql = "INSERT INTO estudiantes (cedula, nombre, apellido, email, direccion, telefono, fecha_registro) VALUES (?,?,?,?,?,?,?)";
try {
PreparedStatement pst = reg.prepareStatement(sql);
pst.setInt(1,ced);
pst.setString(2,nom);
pst.setString(3,ape);
pst.setString(4,email);
pst.setString(5,dir);
pst.setString(6,telefono);
pst.setDate(7, (java.sql.Date) fechareg);
//if (f == false){
int n = pst.executeUpdate();
if (n > 0){
JOptionPane.showMessageDialog(null,"registrado con exito");
}
//}
} catch (SQLException ex) {
Logger.getLogger(Ingreso_Datos.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null,"Error al registrar");
}
这是我的学生table
cedula | int(11) unsigned zerofill | NO | PRI | NULL
nombre | varchar(50) | NO | | NULL
apellido | varchar(50) | NO | | NULL
email | varchar(100) | NO | | NULL
direccion | varchar(100) | NO | | NULL
telefono | varchar(11) | NO | | NULL
fecha_registro | timestamp | NO | | CURRENT_TIMESTAMP
如果我给 ced
一个值,为什么我得到 NullPointerException
? cedula
是一个 id,每个注册公民都有一个唯一的数字,所以我打算将它用作主键。我做错了什么?
David Maust 指出了 Integer.getInteger 和 Integer.parseInt 之间的区别,这就是问题所在。
似乎这条线正在返回null
。
ced = Integer.getInteger(CedulaField.getText());
根据 javadoc,此方法按名称检索系统 属性 的值。 https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#getInteger(java.lang.String)
我认为您打算使用 parseInt
,它将字符串解析为整数:
ced = Integer.parseInt(CedulaField.getText());
我正在尝试使用 PreparedStatement
将数据输入 MySQL table,问题是当它到达 [=16] 时我得到 NullPointerException
=]行。
Conexion con = new Conexion();
Connection reg = con.conexion();
Integer ced;
boolean f = false;
String nom, ape, email, dir, tel, codtel, telefono;
Date fechareg = new Date();
String sql;
ced = Integer.getInteger(CedulaField.getText());
nom = NombreField.getText();
ape = ApellidoField.getText();
email = emailField.getText();
dir = dirArea.getText();
tel = TelField.getText();
codtel = (String) TelBox.getSelectedItem();
telefono = codtel + tel;
tel = TelField.getText();
sql = "INSERT INTO estudiantes (cedula, nombre, apellido, email, direccion, telefono, fecha_registro) VALUES (?,?,?,?,?,?,?)";
try {
PreparedStatement pst = reg.prepareStatement(sql);
pst.setInt(1,ced);
pst.setString(2,nom);
pst.setString(3,ape);
pst.setString(4,email);
pst.setString(5,dir);
pst.setString(6,telefono);
pst.setDate(7, (java.sql.Date) fechareg);
//if (f == false){
int n = pst.executeUpdate();
if (n > 0){
JOptionPane.showMessageDialog(null,"registrado con exito");
}
//}
} catch (SQLException ex) {
Logger.getLogger(Ingreso_Datos.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null,"Error al registrar");
}
这是我的学生table
cedula | int(11) unsigned zerofill | NO | PRI | NULL
nombre | varchar(50) | NO | | NULL
apellido | varchar(50) | NO | | NULL
email | varchar(100) | NO | | NULL
direccion | varchar(100) | NO | | NULL
telefono | varchar(11) | NO | | NULL
fecha_registro | timestamp | NO | | CURRENT_TIMESTAMP
如果我给 ced
一个值,为什么我得到 NullPointerException
? cedula
是一个 id,每个注册公民都有一个唯一的数字,所以我打算将它用作主键。我做错了什么?
David Maust 指出了 Integer.getInteger 和 Integer.parseInt 之间的区别,这就是问题所在。
似乎这条线正在返回null
。
ced = Integer.getInteger(CedulaField.getText());
根据 javadoc,此方法按名称检索系统 属性 的值。 https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#getInteger(java.lang.String)
我认为您打算使用 parseInt
,它将字符串解析为整数:
ced = Integer.parseInt(CedulaField.getText());