在MS Access中插入日期时,java中发生错误
这是我想在MS Aceess数据库中插入日期的代码在MS Access中插入日期时,java中发生错误,java,ms-access,jdbc,Java,Ms Access,Jdbc,这是我想在MS Aceess数据库中插入日期的代码 try { pst = con.prepareStatement("insert into InOut (Date) Values(?)"); pst.setString(1,jTextField3.getText()); pst.executeUpdate(); JOptionPane.showMessageDialog(null,"Saved Successfully."); } catch(Exc
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)
java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]
INSERT INTO语句中的语法错误
位于sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
位于sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
位于sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
位于sun.jdbc.odbc.JdbcOdbc.SQLPrepare(JdbcOdbc.java:4837)
位于sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:475)
位于sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement(JdbcOdbcConnection.java:443)
请帮帮我 正如@Gord Thompson所提到的,您可以在原生sql查询中强制转换一个值。但是在将变量jTextField3.getText()发送到sql之前,将其强制转换为Date。因为它是一个UI输入,所以使用日期解析器首先解析它,然后将其转换为日期 我假设数据库中的列的名称是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);
选中此日期
是Access中的SQL,因此如果必须将其用作列名,则需要将其括在方括号中,如下所示:
pst=con.prepareStatement(“插入InOut([Date])值(?);
ps.setString(1,“2011-12-31”);
ps.executeUpdate();
谢谢您的评论,为了更好地了解我,请您输入相同的代码。。。。。