字符串文字必須使用'符號。因此,無論何時編寫表名或列名,都只需編寫即可。但當您編寫實際數據時,請使用':INSERT INTO smtp_data(smtp_server) VALUES ('put this stuff in quotes'); HOWEVER 這永遠不會發生。問題是,通常輸入并不完全“安全”。一些用戶在某個地方輸入了它(誰知道他們可能有什么惡意意圖),或者不知道這個應用程序的確切流程的人這樣做了。即使目前你認為這種情況不可能發生,軟件也有一種令人討厭的傾向,那就是它會被用來做你在編寫它時想象不到的事情。因此,這是一場即將發生的巨大安全災難。畢竟,如果有人為了好玩而嘗試使用此SMTP服務器: haha hacked your box'); DROP TABLE smtp_data CASCADE; SHELL_EXEC 'FORMAT C: /y /force'; -- 有人這樣做的那一天對你來說將是非常非常糟糕的一天。 解決方案是PreparedStatement,這里不使用像'smtp.server.com'這樣的文本值,只需添加一個不帶引號的問號:INSERT INTO smtp_data(field1, field2) VALUES (?, ?);-這是傳遞給PreparedStatement的SQL。然后分別“設置”每個問號的值: ps.setStrin