You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码看似正常,运行时却出现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:13:20