创建具有大量列的预准备语句

时间:2012-02-24 11:38:12

标签: java prepared-statement

我必须构建一个插入查询字符串来创建Prepared Statement。我在Excel文件中有所有列名。

表中有超过250列,创建简单的插入查询需要花费很多时间和精力。我必须对列进行计数,并将?放在查询中的值字段中。

是否有其他方法可以创建这些查询。

请建议。 在此先感谢

2 个答案:

答案 0 :(得分:1)

我可以建议这样做的范例,实现它将是一个更大的问题,但从我可以得出的结论来看,这是一个非常复杂的任务!

您可以使用JXL api读取这些列名,也可以将它们的类型存储在同一个excel文件中(这在准备语句时很有用。)

所以你的excel将是:

Column 1 | Integer
Column 2 | String
Column 3 | Date 

等等

JXL将允许您将所有这些内容读入您的java程序,将此信息存储在Map(java.util.HashMap)中,因此此时您将拥有程序中列的名称及其数据类型。

现在,关于创建预备语句。

String allColumnNames ="";
foreach element in the hashmap, allColumnNames+=getKey() + ","

所以此时allColumnNames包含所有列名

分段制作预备陈述:

String statement = "insert into table ("+ allColumnNames +") values " + <250 ? marks here>;

准备好你的陈述。

在此之后,要插入内容,您可以再次遍历hashmap并调用setString或setInt或其他任何内容,具体取决于hashmap的“value”部分。

正如我所说,它是一个漫长而且涉及的过程,但您甚至可以修改此过程,只需在excel文件中设置值,然后将它们直接从excel插入到表中。

答案 1 :(得分:0)

对于快速插入,您可以使用批量准备语句 COPY FROM (取决于数据库及其驱动程序) - 有关详细信息,请参阅http://rostislav-matl.blogspot.com/2011/08/fast-inserts-to-postgresql-with-jdbc.html