使用MySQL却出现MariaDB报错?SQL语法错误及疑问求助
问题解决步骤
1. 修复SQL核心语法错误
报错直接指向form category,这是拼写错误:把SQL关键字FROM写成了FORM。同时你的SQL逻辑也存在问题:
- 若要查询
category全表数据,正确SQL应为:select * from category - 若要按条件筛选(比如按某个字段匹配),需写成:
select * from category where 字段名= ?,且必须补充pst.setXXX(1, 参数值)来设置占位符参数(你当前只写了?却未传参,会触发新的错误)
2. 关于报错显示MariaDB的说明
MariaDB是MySQL的分支,两者语法高度兼容,多数Java数据库驱动(如mysql-connector-java)会将兼容的MariaDB服务器识别并在报错中显示,这属于正常现象,和你使用MySQL的需求不冲突,无需额外处理。
3. 修复表格数据填充的逻辑错误
你代码中的for(int i= 1; i<=c; i++)循环会重复添加id、catname、status多次,导致每行数据冗余(比如列数c为3时,每行会生成9个元素),和表格模型列数不匹配。直接去掉循环,单次添加字段即可:
修复后的完整代码示例
public void Category_Load() { try { // 以查询全表为例,若需条件查询可自行修改SQL并补充参数设置 pst = con.prepareStatement("select * from category"); rs = pst.executeQuery(); DefaultTableModel d = (DefaultTableModel)jTable1.getModel(); d.setRowCount(0); while(rs.next()) { Vector v2 = new Vector(); v2.add(rs.getString("id")); v2.add(rs.getString("catname")); v2.add(rs.getString("status")); d.addRow(v2); } } catch (SQLException ex) { Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex); } }
内容的提问来源于stack exchange,提问作者Kalcyfer
相关产品推荐
相关产品推荐

