簡體   English   中英

例外:UCAExc ::: 4.0.2意外令牌:需要2017年:)

[英]Exception: UCAExc:::4.0.2 unexpected token: 2017 required: )

當我向Microsoft Access中插入日期時,它給了我這個錯誤,為什么? 這是什么意思? 我確定查詢是正確的。 這是我的代碼:

try {
                final DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
                Date date = new Date();
                String a = "#"+sdf.format(date)+"#";
                conn=DriverManager.getConnection(dbURL);
                System.out.println("Connection ok.");
                id = Integer.parseInt(ID.getText());
                String query = "INSERT INTO Patient(ID, FName, Address, Phone, Allergies)\n" + 
                        "VALUES ('"+id+"', '"+ name.getText()+"', '"+ address.getText()+"', '"+phone.getText()+"', '"+allergies.getText()+ "');";
                PreparedStatement stmt = conn.prepareStatement(query);
                stmt.executeUpdate();
                String query2 = "INSERT INTO Visit( PatientID, ArrivalTime, HeartRate, Temprature) "+
                        "VALUES ('"+id+"','"+a+"', '"+heart.getText()+"', '"+temp.getText()+"');";

                stmt = conn.prepareStatement(query2);
                stmt.executeUpdate();
                conn.close();

            }catch(Exception e){
                System.err.println("Exception: "+e.getMessage());
            }

與聲明

String a = "#"+sdf.format(date)+"#";

您已經在日期字符串周圍放置了#定界符。 然后,您的動態SQL繼續在周圍放置'分隔符,結果是

INSERT INTO Visit (PatientID, ArrivalTime, ...) VALUES ('1', '#12/29/2017 06:24:23 PM#', ...);

這是無效的語法。 正確的文字語法將是...

INSERT INTO Visit (PatientID, ArrivalTime, ...) VALUES (1, #12/29/2017 06:24:23 PM#, ...);

...但是您實際上應該使用動態SQL。 您應該按照以下方式使用參數化查詢

// test data
int id = 123;
java.util.Date date = new java.util.Date();

String sql = "INSERT INTO Visit (PatientID, ArrivalTime) VALUES (?,?);";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.setTimestamp(2, new java.sql.Timestamp(date.getTime()));
ps.executeUpdate();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM