我正在使用NetBeans GUI生成器和Derby开发Java项目。我在使用按钮和文本字段向数据库表添加新记录时遇到问题。
正在使用的按钮的ActionPerformed从文本字段中提取输入,并将其发送到客户类内的addCustomer方法。以下是customer类和addCustomer方法的代码。该类还调用一个单独的类DBConnection,它建立与数据库的连接。
我在Java中使用数据库方面相当新,因此非常感谢任何帮助和指导。
public class Customer extends DBConnection
{
private PreparedStatement insertNewCustomer;
private PreparedStatement allCustomers;
//Customer Class Constructor
public Customer()
{
getConnection();
try
{
insertNewCustomer = connection.prepareStatement("INSERT INTO Customer" + "Name" + "VALUES (?)");
allCustomers = connection.prepareStatement("SELECT * FROM Customer");
}
catch (SQLException sqlException)
{
sqlException.printStackTrace();
System.exit(1);
}
}
//End of constructor
//Adds a new customer to the CUSTOMER table in the database
public void addCustomer(String newName)
{
try {
insertNewCustomer.setString(1,newName);
insertNewCustomer.executeUpdate();
}
catch (SQLException sqlException)
{
sqlException.printStackTrace();
}
}
答案 0 :(得分:1)
您传递给prepareStatement的插入SQL语法不正确。 可以用两种方式编写INSERT INTO语句。
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
如果要为表的所有列添加值,则无需在SQL查询中指定列名。
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
我假设Customer是您的表名,那么您的案例中的正确语法是
insertNewCustomer = connection.prepareStatement
("INSERT INTO Customer VALUES (?)");