- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将使用 JDBC 将数据推送到 PostgreSQL
。
所以我在 Dao 中编写了这样的 Insert
代码。
public void insert(Connection con, List<InsertVo> list) throws Exception{
PreparedStatement pstmt = null;
int listSize = list.size();
int pstmtSetInt = 1;
try {
String sql = "insert into tableName "
+ "(colName1,colName2,colName3) "
+ "values ";
String addInsertSql = "(?,?,?::date)";
sql = addInsertQuery(sql, addInsertSql, listSize);
pstmt = con.prepareStatement(sql);
for (InsertVo vo : list) {
pstmt.setString(pstmtSetInt++, vo.getColName1());
pstmt.setInt(pstmtSetInt++, vo.getColName2());
pstmt.setString(pstmtSetInt++, vo.getColName3());
}
System.out.println(pstmt);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
try {
if (pstmt != null) {
pstmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private String addInsertQuery(String sql, String addInsertSql, int listSize) {
for (int idx = 0; idx < listSize; idx++) {
sql = sql + addInsertSql;
if (listSize-1 != idx) {
sql = sql + ", ";
}
}
return sql;
}
有很多Insert
语句,输入一次就会重复,所以写的时候增加'()'的个数。
但是,此代码的问题在于,如果日期部分包含 null
或像 ""
这样的空字符串,则会出现错误。
由于该部分不是 not null
,因此它可以是 null
或 ""
。
底线是我想知道除了检查日期部分和提供不同的插入语句之外是否还有其他东西。
The ERROR message looks like this.
org.postgresql.util.PSQLException: ERROR: invalid input syntax for type date: ""
I checked again and found that if I change the value to
""
NULL, the ERROR does not go into it.
//pstmt.setString(pstmtSetInt++, vo.getColName3());
String dateValue=vo.getColName3();
if (dateValue.equals("")) {
dateValue = null;
}
pstmt.setString(pstmtSetInt++, dateValue);
Thank you for your help.
最佳答案
I want to know if there's something other than checking the date part and giving different insert statements.
您不需要为每种情况使用不同的 SQL 语句,您只需要调整语句使其在传递空字符串时不会失败:
INSERT INTO tblname ( ... , col3) VALUES ( ... , NULLIF(?, '')::date)
关于java - PostgreSQL 无法将空字符串转换为(空)日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57744597/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!