Я проектирую JFrame, где я буду принимать данные для имени, имени пользователя, пароля, телефона, номера и местоположения изображения «img» из JFileChooser. Практически я вставляю пароли без хэширования, а столбец № телефона имеет тип данных VarChar (45). Это следует упустить из виду, поскольку я довольно новичок в SQL программировании с использованием JAVA.
. Кнопка регистрации используется для вставки данных в строку SQL. ActionListener выглядит следующим образом:
signupbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
Statement st=conn.createStatement();
ResultSet rs=null;
String name=namef.getText(),usnm=usnmf.getText(),pswd=pswdf.getText(),ph=phf.getText();
String sql="insert into data (name,username,password,ph.no.,profile) values("+name+","+usnm+","+pswd+","+ph+","+img+")";
st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
int key = 0;
rs = st.getGeneratedKeys();
if (rs.next())
{
key = rs.getInt(1);
}
JOptionPane.showMessageDialog(null, "Key : "+key);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
});
Когда данные передаются и кнопка нажата, создается исключение и печатается исключение:
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',profile) values(Jyotirmay,Usnm,Pswd,1122334455,E:\1.jpg' at line 1
Почему появляется ошибка? Я пробовал несколько методов, таких как PreparedStatement
вместо Statement
с ?
, но все равно получаю ошибку.
PS
Использование PreparedStatement:
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
String sql="INSERT into data (name, username, password, ph.no., profile) VALUES (?,?,?,?,?);";
PreparedStatement st=conn.prepareStatement(sql);
String name=namef.getText(),usnm=usnmf.getText(),pswd=pswdf.getText(),ph=phf.getText();
st.setString(1, name);
st.setString(2, usnm);
st.setString(3, pswd);
st.setString(4, ph);
st.setString(5, img);
st.executeUpdate();
JOptionPane.showMessageDialog(null, "SUCESS! Data inserted. Try Logging In.");
}
catch(Exception ex)
{
System.out.println(ex);
}
}
});
Примечание: img уже объявлен и инициализирован. Кроме того, в консоли правильно напечатано местоположение абсолютного изображения.