我想提前感谢你们抽出时间。我正在尝试使用sql语句将在jtextfield中输入的值插入到表中,但我不断收到一堆错误。
听众:
private void jTextField1FocusLost(java.awt.event.FocusEvent evt) {
name = jTextField1.getText();
}
private void jTextField2FocusLost(java.awt.event.FocusEvent evt) {
username = jTextField2.getText();
}
private void jTextField3FocusLost(java.awt.event.FocusEvent evt) {
String pword = jTextField2.getText();
password = Integer.parseInt(pword);
//the convertion is essential because the password column in the table is defined as integer
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
register regis = new register(name, username, password);
regis.registerUser();
}
INSERT:
public class register {
public String name;
public String username;
public Integer password;
public register(String nm, String uname, Integer passw) {
name = nm;
username = uname;
password = passw;
}
public void registerUser(){
try {
String host = "jdbc:derby://localhost:1527/fypDB";
String uname = "uname";
String pword = "123456";
Connection con = DriverManager.getConnection( host, uname, pword );
Statement stmt = con.createStatement();
String SQL = "INSERT INTO LOGIN VALUES('"+username+"',"+password+")";
stmt.executeUpdate( SQL );
} catch (SQLException err){
System.out.println(err.getMessage());
}
}
}
LOGIN表只有2列,所以我忽略了“name”变量。
由于我无法上传图像,我将描述界面。 textfield 1和2输入“test13”,输入密码的第3个文本字段输入“10”,然后点击注册按钮。
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "test13"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Interface.Register.jTextField3FocusLost(Register.java:137)
at Interface.Register.access$200(Register.java:15)
at Interface.Register$3.focusLost(Register.java:63)
at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:230)
at java.awt.Component.processFocusEvent(Component.java:6419)
at java.awt.Component.processEvent(Component.java:6283)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:995)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:661)
at java.awt.Component.dispatchEventImpl(Component.java:4754)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
答案 0 :(得分:0)
在jTextField3FocusLost
jTextField2
,您正在阅读jTextField3
而不是test13
。因此密码被读作"INSERT INTO LOGIN VALUES('"+username+"',"+password+")";
。
很少注意到:
答案 1 :(得分:0)
试试这个。您在密码值周围缺少引号。
String SQL = "INSERT INTO LOGIN VALUES('"+username+"','"+password+"')";
答案 2 :(得分:0)
您从错误的字段中获取值。 你必须改变:
String pword = jTextField2.getText();
到
String pword = jTextField3.getText();