我还是个新手。但是,我在mt数据库中插入数据时遇到了问题。我认为我的脚本中有很多错误
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Student extends JFrame
{
//Component's name
private JLabel lblName,lblAge,lblGrade;
private JTextField txtName, txtAge,txtGrade;
private JButton btnAdd;
String c;
String d;
String e;
public void Student()
{
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "Information";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "abcd";
Container container = getContentPane();
container.setLayout(new FlowLayout());
lblName=new JLabel("Name: ");
container.add(lblName);
txtName=new JTextField(30);
container.add(txtName);
lblAge=new JLabel("Age: ");
container.add(lblAge);
txtAge=new JTextField(2);
container.add(txtAge);
lblGrade=new JLabel("Grade: ");
container.add(lblGrade);
txtGrade=new JTextField(1);
container.add(txtGrade);
btnAdd=new JButton("Add");
container.add(btnAdd);
btnAdd.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
c=txtName.getText();
d=txtAge.getText();
e=txtGrade.getText();
try
{
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url + dbName, userName, password);
PreparedStatement statement = conn.prepareStatement("INSERT INTO Information ('StudentName', 'StudentAge','Grade') VALUES ('"+c+"', '"+d+"', '"+e+"'')");
statement.executeQuery();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
});
setSize(300,300);
setVisible(true);
}
public static void main(String[]args)
{
Student application = new Student();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}那么,有人能帮我解决这里的问题吗?请参见下面的屏幕截图以查看输出。

发布于 2017-02-12 16:23:38
1-您不需要在列'StudentName'的名称中使用'',如果需要,可以使用``代替''
2-您在查询中遇到问题:
...('"+c+"', '"+d+"', '"+e+"'')你最后设置了两个'',这就产生了一个问题。
你为什么不使用?如下所示:
PreparedStatement statement =
conn.prepareStatement("INSERT INTO Information (StudentName, StudentAge, Grade) VALUES (?, ?, ?)");
statement.setString(1, c);
statement.setString(2, d);
statement.setString(3, e);
statement.executeQuery();您可以在此处了解有关Prepared Statement doc的更多信息
https://stackoverflow.com/questions/42185515
复制相似问题