我有以下问题。 我在项目中使用 JDBC,并制作了简单的方法将数据插入数据库。
我的问题是:当我想插入诸如 sysdate
或只是 NULL
之类的内容来自动递增时该怎么办?对于我的方法,我仅发送字符串,并且将 NULL
写入字符串不起作用。
您能给我一些如何改进的建议吗?
这是查询中带有常量 null
的代码,但这不是我想要的。
public static void insertInto(String Table, ArrayList<String> values) throws SQLException
{
Connection conn = JavaConnectDB.ConnectDb();
OraclePreparedStatement pst = null;
StringBuilder Query = new StringBuilder("INSERT INTO " + Table + " VALUES (NULL, ");
for (int i = 0; i < values.size(); i++)
{
Query.append("? ");
if (i + 1 != values.size())
Query.append(", ");
}
Query.append(")");
pst = (OraclePreparedStatement) conn.prepareStatement(Query.toString());
for (int i = 0; i < values.size(); i++)
{
pst.setString(i + 1, values.get(i));
}
pst.executeUpdate();
}
此方法创建类似“INSERT INTO TABLE VALUES (NULL, ?, ? ,?)”的查询,然后用数组中的值填充空白。
最佳答案
有java.sql.PreparedStatement.setNull(int, int)
尝试,例如
pst.setNull(1, Types.BIGINT);
for (int i = 1; i < values.size(); i++)
{
pst.setString(i + 1, values.get(i));
}
将 Types.BIGINT
更改为适合您的列的类型。
请注意,values.get(0)
只是被忽略,但应该出现在数组中。
关于java - 如何向数组插入日期或NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431954/