내 코드는 select 문을 올바르게 실행할 수 있지만 어떤 이유로 삽입 및 삭제 세그먼트를 사용할 수 없습니다. 나는 그들이 똑같아 야한다고 믿는다. 나는 지금 내 코드가 무엇이 잘못되었는지를 모른다.Java GUI를 사용하여 데이터베이스에서 삭제 또는 삽입
else if (e.getSource() == executeButton) {
//Create a statement
if (enterSQLText.getText().toLowerCase().contains("select")){
try{
String commandString = enterSQLText.getText();
Statement statement = conn.createStatement();
//Execute a statement
ResultSet resultSet = statement.executeQuery(commandString);
//Process query results
ResultSetMetaData metaData = resultSet.getMetaData();
int numberOfColumns = metaData.getColumnCount();
for(int i = 1; i<= numberOfColumns; i++){
executionResultText.append(metaData.getColumnName(i) + "\t");
System.out.printf("%20s\t", metaData.getColumnName(i));
}
executionResultText.append("\n");
System.out.println();
while (resultSet.next()){
for (int i = 1; i <= numberOfColumns; i++){
executionResultText.append(resultSet.getObject(i).toString() + "\t");
System.out.printf("%20s\t", resultSet.getObject(i));
}
executionResultText.append("\n");
System.out.println();
}
System.out.println("Execute Button Works!");
}
catch (Exception h){
h.printStackTrace();
}
}
else if (enterSQLText.getText().toLowerCase().contains("delete") || enterSQLText.getText().toLowerCase().contains("insert")) {
try {
String commandString = enterSQLText.getText();
Statement statement = conn.prepareStatement(commandString);
ResultSet resultSet = statement.executeUpdate(commandString);
}
catch (Exception l){
l.printStackTrace();
}
}
else {
executionResultText.setText("Sorry, that is not a valid command");
System.out.println("Not a vilid command.");
}
}
else if 문 내에서 문제가 발생합니다. 삽입 또는 삭제 문을 실행하려고하면 대개 스택 추적 오류가 발생합니다. 누군가 제발 도와 줄 수 있니?
편집:
이 코드가 실행에 도착, 나는 다른 변경 한 경우 다음 세그먼트 :
else if (enterSQLText.getText().toLowerCase().contains("delete") || enterSQLText.getText().toLowerCase().contains("insert")) {
try {
String commandString = enterSQLText.getText();
Statement statement = conn.prepareStatement(commandString);
@SuppressWarnings("unused")
int resultSet = statement.executeUpdate(commandString);
}
catch (Exception l){
l.printStackTrace();
}
}
내가 삽입을 실행하거나 명령을 삭제하려고하면, 내가 얻을 스택이 같은 추적하지 :
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'Mark Renshaw' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725)
at ConnectToDB.actionPerformed(ConnectToDB.java:203)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
을 아무리 내가 뭘 세그먼트로, 데이터베이스에 연결할 수있는에서 저를 방지하거나 오류가 발생 하나.
스택 추적이란 무엇입니까 – smk
관련 스택 추적을 공유 할 수 있습니까? –
스택 추적을 추가하는 것이 좋습니다. –