我的第二张表并没有填满数据

时间:2017-06-02 14:11:51

标签: java mysql database jdbc

好吧..所以我做了一个小应用程序,它连接到我的数据库。我可以读出一个excel文件并将这些文件存储到一个数组中。 我的数据库有多个表。我可以填写一张桌子,但是当我想填写另一张桌子时,它也不会起作用。我的堆栈跟踪中出现了大量的红线,我无法弄清楚该怎么做..所以我拼命地来到这里,希望得到一些帮助。

我的程序包含一个Main:

public class Customer {
private int cid;
private String name;
private String purchase;
private String age;

public Customer(int cid, String name, String purchase, String age) {
    this.cid = cid;
    this.name = name;
    this.purchase = purchase;
    this.age = age;
}

public int getCid() {
    return cid;
}

public void setCid(int cid) {
    this.cid = cid;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPurchase() {
    return purchase;
}

public void setPurchase(String purchase) {
    this.purchase = purchase;
}

public String getAge() {
    return age;
}

public void setAge(String age) {
    this.age = age;
}

@Override
public String toString() {
    return "" + cid + " ; "+ name + " ; " + purchase + " ; " + age;

----------------------------------------------------------------------------
public class Order {
private int orderid;
private String product;
private int cid;

public Order(int orderid, String product, int cid) {
    this.orderid = orderid;
    this.product = product;
    this.cid = cid;
}

public int getOrderid() {
    return orderid;
}

public void setOrderid(int orderid) {
    this.orderid = orderid;
}

public String getProduct() {
    return product;
}

public void setProduct(String product) {
    this.product = product;
}

public int getCid() {
    return cid;
}

public void setCid(int cid) {
    this.cid = cid;
}

@Override
public String toString() {
    return "" + orderid + " ; " + product + " ; " + cid;
}

两个容器类:

public class CustomerMC {
private Connection connection;
private PreparedStatement pst;
String query;
ResultSet rs;

public CustomerMC(){
    try{
       connection = SimpleDataSourceV2.getConnection(); 
    }
    catch(SQLException e){
        System.out.println("Connection failure");
        e.printStackTrace();
    }
}

public String insertCustomer(String cid, String name, String purchase, String age) {
    String returning = null;
    try {
        query = "insert into CustomerService values(?,?,?,?);";

        pst = connection.prepareStatement(query);
        pst.setInt(1, Integer.parseInt(cid));
        pst.setString(2, name);
        pst.setString(3, purchase);
        pst.setString(4, age);

        int response = pst.executeUpdate();
        returning = response +" Records has/have been edited";

    } catch (SQLException e) {
        returning = "An error has occured";

    }

    return returning;

}
public String insertOrder(String orderid, String product, String id) {
    String returning = null;
    try {
        query = "insert into Order values(?,?,?);";

        pst = connection.prepareStatement(query);
        pst.setInt(1, Integer.parseInt(orderid));
        pst.setString(2, product);
        pst.setInt(3, Integer.parseInt(id));

        int response = pst.executeUpdate();
        returning = response +" Records has/have been edited";

    } catch (SQLException e) {
        System.out.println();
        e.printStackTrace();

    }

    return returning;

}

我的模型类客户查询等:

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2794)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
at p4project.CustomerMC.insertOrder(CustomerMC.java:65)

at p4project.Main.main(Main.java:102)
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'Order values(2,'Couch',1)' at line 1

第一堂课;这是客户表填写完全正常。它打印出它必须做的事情。但是,订单表,第二个,没有。我得到的输出如下:

{{1}}

我希望有人能提供帮助,欢迎任何帮助。

此致

1 个答案:

答案 0 :(得分:3)

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个   SQL语法错误; 查看与您对应的手册   MySQL服务器版本,用于在订单附近使用正确的语法   值(2,'长椅',1)'在第1行

Order是MySQL的保留字,所以你必须把你的表名放在``之间,如下所示:

query = "insert into `Order` values(?, ?, ?);";
//-------------------^-----^