自學JavaWeb開發時,遇到SQL插入語句報錯。原代碼未顯式指定字段名,直接使用values子句,導致數據庫無法正確映射數據。
String sql = "insert into message values (messageSeq.nextVal,?,?,?,sysdate)";
最佳實踐是顯式指定字段名,確保數據與列的對應關係清晰,避免因表結構變更導致的錯誤。
String sql = "insert into message (id,title,username,contents,createtime) values (messageSeq.nextVal,'11','22','33',sysdate)";
生產環境中應使用預編譯語句:
String sql = "insert into message (id,title,username,contents,createtime) values (messageSeq.nextVal,?,?,?,sysdate)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, title);
pstmt.setString(2, username);
pstmt.setString(3, contents);
pstmt.executeUpdate();