Java:使用prepare语句向数据库添加新记录

时间:2018-04-11 03:16:27

标签: java database

我正在使用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();
    }
}

1 个答案:

答案 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 (?)");