代码看似正常,运行时却出现MySQL SQL语法错误,如何解决?
解决java.sql.SQLSyntaxErrorException:MySQL语法错误
错误根源
你遇到的SQLSyntaxErrorException核心问题是混用了Oracle数据库的字段类型语法,但当前连接的是MySQL——MySQL并不支持varchar2和number这两种Oracle专属的类型标识,这直接导致了SQL语法解析失败。
修正方案
将创建表SQL中的Oracle类型替换为MySQL对应的合法类型:
- 把
varchar2(20)改为varchar(20)(MySQL标准的可变长度字符串类型) - 把
number改为int(匹配你代码中接收的整数薪资,若需要支持小数薪资,可改用decimal(10,2))
修正后的关键代码片段
创建表的SQL语句修改为:
int i=cs.executeUpdate("create table student2(name varchar(20),sal int)");
额外优化建议
你的代码存在SQL注入风险,直接将用户输入拼接进SQL语句是不安全的实践。建议改用PreparedStatement预处理SQL,示例如下:
// 替换原Statement相关逻辑 String createSql = "create table student2(name varchar(20),sal int)"; PreparedStatement createStmt = con.prepareStatement(createSql); createStmt.executeUpdate(); String insertSql = "insert into student2 values(?, ?)"; PreparedStatement insertStmt = con.prepareStatement(insertSql); insertStmt.setString(1, Name); insertStmt.setInt(2, sal); insertStmt.executeUpdate(); String querySql = "select * from student2"; PreparedStatement queryStmt = con.prepareStatement(querySql); ResultSet rs = queryStmt.executeQuery();
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

