Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC消除insert语句中的列名_Java_Database_Jdbc - Fatal编程技术网

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

Java 使用JDBC消除insert语句中的列名,java,database,jdbc,Java,Database,Jdbc,我正在尝试使用JDBC创建一个insert语句。对于表,我尝试插入包含82列的值。我想知道是否有一种方法可以直接调用insert函数并将值插入到表中,而不是指定每个列名? 例如:假设一条语句是:将值(1,21,…)插入表(id,年龄,…)中。 我不想在语句中指定列名(id、age和all)。有没有不处理列名的方法?您可以执行以下操作: INSERT INTO table VALUES (1, 21, 345, ...) 。。。但是,您必须确保在表中提供每个列的值,即使是可为空的值。您还必须确保

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

您可以执行以下操作:

INSERT INTO table VALUES (1, 21, 345, ...)
。。。但是,您必须确保在表中提供每个列的值,即使是可为空的值。您还必须确保按照数据库中定义的确切顺序提供它们

帮你自己一个忙,别那么做。您可能会发现现在必须显式列出所有列很烦人。但这样做:

  • 您可以选择不为某些列提供值
  • 列的顺序不需要与表的列定义顺序匹配
  • (而且最重要的是)如果有人向您的表中添加新的可为null的列,您的代码将不会中断

另一种选择是在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();
}

如果没有发布相关代码,没有人可以帮助您。否决票。您可以参考如何通过检查来提问,以及如何通过阅读以下内容来创建示例:一个具有82列的表显示了设计气味(除非您说服我相反)