com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'man' in 'field list'
表結構:
CREATE TABLE student (
sno INT,
sname VARCHAR(20),
sage INT,
ssex VARCHAR(10)
);
錯誤插入語句:
INSERT INTO student (sno, sname, sage, ssex) VALUES (1, 'Tom', 20, man);
問題:man 未加引號,被解析器識別為列名而非字符串字面值。
INSERT INTO student (sno, sname, sage, ssex) VALUES (1, 'Tom', 20, 'man');
或使用參數化查詢(推薦):
String sql = "INSERT INTO student (sno, sname, sage, ssex) VALUES (?, ?, ?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, 1); ps.setString(2, "Tom"); ps.setInt(3, 20); ps.setString(4, "man"); ps.executeUpdate();
| 數據類型 | SQL 字面值寫法 | Java/JDBC 參數化 |
|---|---|---|
| 字符串 (VARCHAR, CHAR, TEXT) | 'value' 或 "value" | ps.setString() |
| 日期/時間 (DATE, DATETIME, TIMESTAMP) | '2024-01-01' | ps.setDate() / ps.setTimestamp() |
| 數值 (INT, DECIMAL, FLOAT) | 123 (無引號) | ps.setInt() / ps.setDouble() |
| 布爾 (BOOL, TINYINT(1)) | TRUE/FALSE 或 1/0 | ps.setBoolean() |
| NULL | NULL (大寫,無引號) | ps.setNull() |
\`order\`PreparedStatement 防注入、自動處理類型轉換