我想在sql server中插入记录.表名和列在此代码中指定,
String str_date=date;
DateFormat formatter ;
formatter = new SimpleDateFormat("MM/dd/yyyy");
date1 = (Date)formatter.parse(str_date);
System.out.println("Today is " +date1 );
Run Code Online (Sandbox Code Playgroud)
try{
String query="INSERT INTO BULT_DATA " +
"(ULDT_ID" +
",ULDT_DESC" +
",ULDT_DT" +
",ULDT_ULTH_ID" +
",ULDT_DATA_FILE" +
",ULDT_MAX_ROW_NO" +
",ULDT_REC_STS" +
",ULDT_CRE_USER_ID" +
",ULDT_CRE_DT" +
",ULDT_UPD_USER_ID" +
",ULDT_UPD_DT" +
",ULDT_APRV_USER_ID" +
",ULDT_APRV_DT)" +
"VALUES ('"+
uploadID+"','"+
uploadDes+"','"+
date1+"','" +
templateID+"','"+
dataFile+"','"+
noRows+"','" +
"N','" +
"admin','" +
"2011-12-05 18:41:50.000','" +
"admin','" +
"2011-12-05 18:41:50.000','" +
"NULL','" +
"NULL')";
System.out.println("query :: "+query);
int stmnt= stmt.executeUpdate(query);
}catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个例外
com.microsoft.sqlserver.jdbc.SQLServerException:从字符串转换日期和/或时间时转换失败.
首先,只有美国人使用延迟MM-DD-YYYY格式作为日期 - 每个人/所有其他人,尤其是数据库,都使用ISO格式YYYY-MM-DD.
其次,如果你按照它应该使用的方式使用JDBC,你就不必担心了.您可以继续使用延迟格式,因为JDBC驱动程序将为您处理将对象格式化为SQL.
第三(这是未成年人),喜欢stmt.execute()过stmt.executeUpdate()的插入-插入不更新,这是一个插件.虽然,它可以使用任何一种.
把它们放在一起,你会得到这样的东西(例如):
String sql = "insert into table (int_col, date_col, boolean_col, text_col)" +
" values (?, ?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setObject(1, 7);
statement.setObject(2, new Date());
statement.setObject(3, true);
statement.setObject(4, "hello");
statement.execute();
Run Code Online (Sandbox Code Playgroud)
注意:
?在sql中使用占位符statement.setObject(n, object)JDBC驱动程序将为所有"常用"java对象执行所有必要的转换和格式化,特别是如果该列/数据类型需要引号,则将值括在引号中.
你可以改变你自己的代码,以我在这里演示的方式工作.