这是我想在MS-Aceess数据库中插入日期的代码
try {
pst = con.prepareStatement("insert into InOut (Date) Values(?)");
pst.setString(1,jTextField3.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(null,"Saved Successfully.");
} catch(Exception xp1) {
xp1.printStackTrace();
JOptionPane.showMessageDialog(null,xp1.getMessage());
return;
}
但是在发生错误后运行所述代码: -
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964) at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121) at sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4837) at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475) at sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)
请帮帮我......
答案 0 :(得分:1)
DATE
是Access SQL中的reserved word,因此如果您必须将其用作列名,则需要将其括在方括号中,如下所示:
pst = con.prepareStatement("insert into InOut ([Date]) Values(?)");
ps.setString(1, "2011-12-31");
ps.executeUpdate();
答案 1 :(得分:0)
正如@Gord Thompson所提到的,你可以在本机sql查询中转换一个值。但是在将变量jTextField3.getText()发送到日期之前将其强制转换为日期。因为它是UI输入,所以使用Date解析器首先解析它,然后将其转换为Date。
我假设数据库中列的名称是userDateColumn。您必须强制用户以特定格式输入日期,否则您将获得例外。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
String userInput = jTextField3.getText();
// Convert UserInput Into Date
Date userDate = sdf.parse(userInput);
pst = con.prepareStatement("insert into InOut (userDateColumn) Values(?)");
// Send that is the input to the sql
pst.setString(1,userDate);