更新数据库后更改我的程序?

时间:2013-01-10 00:55:18

标签: java mysql sql sql-insert

很抱歉,如果我的问题不具体或者之前已经回答过。我试着寻找它并提出更好的方式,但这是最准确的方法。

我用Java开发了一个程序,我用以下方式在数据库中插入一个新行:

INSERT INTO table_name VALUES (?,?,?)

问题是我在程序的很多部分都有这个查询,现在我决定在我的表中添加第四列。我是否必须在程序中使用新问号更新EVERY SINGLE查询?如果我不这样做,它会崩溃。

在这些情况下,最好的方法是什么?

3 个答案:

答案 0 :(得分:5)

YES。

您需要添加额外的?参数占位符),因为您使用的是implicit INSERT语句。这意味着您没有指定要插入值的表的列名。

INSERT INTO table_name VALUES (?,?,?)
// the server assumes that you are inserting values for all
// columns in your table
// if you fail to add value on one column. an exception will be thrown

下次创建INSERT语句时,请确保在其上指定列名,以便在通过添加额外列更改表时,不会更新所有占位符。

INSERT INTO table_name (Col1, col2, col3) VALUES (?,?,?)
// the server knows that you are inserting values for a specific column

答案 1 :(得分:2)

  

我是否必须在程序中使用新问号更新每个查询?

可能。在更新每一个查询时,您应该做的是将它们封装到一个对象中,可能使用数据源模式,例如Table Data GatewayRow Data Gateway。这样您Don't Repeat Yourself以及下次更新表时,您只有一个地方可以更新查询。

答案 2 :(得分:0)

由于您使用的语法,您可能会遇到一些问题。我指的是缺少列名。一旦更改表结构,您的INSERT查询就会失败。

如果您使用了以下语法: INSERT INTO table_name (C1, C2, C3) VALUES (?,?,?) 假设您的新列具有正确的默认值,那么它将正常工作。