반응형
JTextField의 사용자 입력에서 테이블에 값을 삽입하려고 시도했습니다. 코드는 오류와 함께 실행됩니다.
SQL 구문에 오류가 있습니다. 설명서를 확인하십시오 올바른 구문에 대한 MySQL 서버 버전에 해당
누구든지이 문제를 해결하도록 도울 수 있습니까? 감사!
다음은 내 코드입니다.
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
class InputRoute
{
JTextField text1;
JTextField text2;
JTextField text3;
String c;
Float d;
public void inputRoute()
{
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "YarraTram";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "abc123";
try
{
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url + dbName, userName, password);
PreparedStatement statement = conn.prepareStatement("INSERT INTO ('route', 'price') VALUES ('"+c+"', '"+d+"')");
statement.executeQuery();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void createAndShowGUI()
{
final JFrame frame = new JFrame("Yarra Tram Route Finder(New Route)");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JLabel label1 = new JLabel("From: ");
JLabel label2 = new JLabel("To: ");
JLabel label3 = new JLabel("Price: ");
text1 = new JTextField(20);
text2 = new JTextField(20);
text3 = new JTextField(20);
JButton button1 = new JButton("Add");
JButton button2 = new JButton("Close");
frame.add(label1, BorderLayout.WEST);
frame.add(text1, BorderLayout.EAST);
frame.add(label2, BorderLayout.WEST);
frame.add(text2, BorderLayout.EAST);
frame.add(label3, BorderLayout.WEST);
frame.add(text3, BorderLayout.EAST);
frame.add(button1);
frame.add(button2);
button2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
String a = text1.getText();
String b = text2.getText();
d = Float.parseFloat(text3.getText());
c = a + " - " + b;
inputRoute();
}
});
button2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
frame.setSize( 500,120 );
frame.setLocationRelativeTo( null );
frame.pack();
frame.setVisible(true);
}
}
다음은 내 MySQL 테이블입니다.
CREATE TABLE `route` (
`rid` int(11) NOT NULL AUTO_INCREMENT,
`route` varchar(100) ,
`price` decimal(5,2) ,
PRIMARY KEY (`rid`)
)
해결 방법
먼저 다음에서 테이블 이름이 누락되었습니다.
... ("INSERT INTO ('route', 'price') VALUES ...
/ here
둘째, 열 이름에 콜론 '
을 사용해서는 안됩니다. 대신 다음과 같이 백틱을 사용하십시오.
... ("INSERT INTO `route` (`route`, `price`) VALUES ...
콜론은 리터럴 값을 전달하는 데 사용됩니다.
참조 페이지 https://stackoverflow.com/questions/14019164
반응형
'MySql' 카테고리의 다른 글
MySQL Python mysqldb를 사용하여 한 번에 여러 행을 삽입하는 방법 (0) | 2021.01.17 |
---|---|
MySQL mysqli_real_escape_string, 사용해야합니까? (0) | 2021.01.17 |
MySQL datetime 필드 (mysql)에서 날짜 만 추출하여 PHP 변수에 할당 (0) | 2021.01.17 |
MySQL PHP PDO 대 일반 mysql_connect (0) | 2021.01.17 |
MySQL UPDATE 열에 데이터 추가 (0) | 2021.01.17 |
댓글