안녕하세요 저는 사용자를 데이터베이스에 등록하려는 작은 애플리케이션을 만들고 있습니다. 괜찮아 보이지만 그것은 내가 운전자에게 문제가 있으며 나는 그것을 발견 할 수 없다는 것을 알려준다.Java를 통해 MySQL 데이터베이스에 등록하지 못했습니다.
내 코드 :
private void createEventListenerDBProperties() {
dbSubmitBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (dbDriverChooser.getSelectedItem().equals("com.mysql.jdbc.Driver")) {
driver = (String) dbDriverChooser.getSelectedItem();
port = dbPortField.getText();
host = "jdbc:mysql://" + hostField.getText() + ":" + port + "/";
} else if (dbDriverChooser.getSelectedItem().equals("oracle.jdbc.driver.OracleDriver")) {
driver = (String) dbDriverChooser.getSelectedItem();
port = dbPortField.getText();
host = "jdbc:oracle:thin:@" + hostField.getText() + ":" + port + ":";
} else if (dbDriverChooser.getSelectedItem().equals("org.postgresql.Driver")) {
driver = (String) dbDriverChooser.getSelectedItem();
port = dbPortField.getText();
host = "jdbc:postgresql://" + hostField.getText() + ":" + port + "/";
} else {
driver = (String) dbDriverChooser.getSelectedItem();
host = "jdbc:sqlite:";
}
db = dbnameField.getText();
dbuser = dbUsernameField.getText();
dbpassword = new String(dbPasswordField.getPassword());
main.remove(dbProperties);
main.add(register);
main.revalidate();
}
});
}
내 연결 방법 :
private Connection instanciateDB() {
Connection con = null;
try {
Class.forName(driver).newInstance();
con = DriverManager.getConnection(host + db, dbuser, dbpassword);
System.out.println("Connection Established");
} catch (ClassNotFoundException | SQLException | InstantiationException |IllegalAccessException e) {
System.out.println("Connection not Established");
JOptionPane.showMessageDialog(MainFrame.this, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
return con;
}
내 등록 방법 :
private void setupRegisterEventListener() {
registerBtn.addActionListener((ActionEvent e) -> {
try {
conn = instanciateDB();
pst = conn.prepareStatement("insert into usersinfo(username, password) values(?,?)");
pst.setString(1, leftFirstText);
pst.setString(2, new String(leftSecondText));
int x = pst.executeUpdate();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(MainFrame.this, "Registration Failed");
System.out.println(ex.getMessage());
}
JOptionPane.showMessageDialog(MainFrame.this, "Registration Successful", "Success", JOptionPane.PLAIN_MESSAGE);
});
}
그리고 그것은 나를 com.mysql.jdbc.Driver
에러 제공하고 내가 왜 instanciateDB에서 잘 모릅니다 방법.
Connection not Established
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ijae4.xdrako00.MainFrame.lambda$setupRegisterEventListener$0(MainFrame.java:126)
at ijae4.xdrako00.MainFrame$$Lambda$13/1389133897.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
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)
아이디어가 있으십니까?
미리 감사드립니다. 도서관에
'== "..."'[비교하지 않는 문자열에 대한 단계입니다 -> MySQL의 JDBC 드라이버 -> 라이브러리를 추가합니다. 'equals'을 사용하십시오.] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Pshemo
같은 문제는 ... 저는 드라이버를 설치했지만 왜 그럴지 모릅니다. 그 날 오류 –
준다 dbproperties 패널을 제거하고 나는 등록 패널을 추가하기 때문에 실패했다고 생각합니까? 그 문자열 문자열을 느슨하게 만들지 ?? –