使用JDBC消除insert语句中的列名

时间:2015-09-23 15:09:04

标签: java database jdbc

我正在尝试使用JDBC创建一个insert语句。对于表,我试图插入包含82列的值。我想知道是否有一种方法可以调用insert函数并将值直接插入表中而不是指定每个列名? 例如:假设一个语句是:插入表(id,age,...)值(1,21,..)。  我不想在语句中指定列名(id,age和all)。有没有办法在不处理列名的情况下执行此操作?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

INSERT INTO table VALUES (1, 21, 345, ...)

...但是您必须确保在表格中提供 每个 列值,即使是可以为空的列值。而且您还必须确保按照数据库中定义的确切顺序提供它们。

帮自己一个忙,不要那样做。您现在可能会发现很烦人,必须明确列出所有列。但通过这样做:

  • 您可以选择不为某些列提供值
  • 列的顺序不需要与表的列定义顺序匹配
  • (最重要的是)如果有人在您的表中添加了一个新的可为空的列,您的代码就不会中断。

答案 1 :(得分:0)

另一种选择是在MySql实例上编写存储过程,然后调用它。在这种情况下,您只需传入要写入的值,存储过程将执行实际插入。

这是一个简单的例子

public void callProc () throws Exception{
      CallableStatement cs;
      Connection con = getMySqlConnection();
           cs = con.prepareCall("CALL getHash(?,?);");
    cs.setString(1, "some string");
    cs.setString(2, "some other string");
      cs.execute();
}