java总是提示mysql语法错误

AeNet 2014-04-03 05:22:01
SQLLoader.execute("INSERT INTO user(counter,name,password,sex,age) VALUES("+Server.counter+","+user.getName()+","+user.getPassword()+ "," +user.getSex()+ ","+user.getAge()+");");

这是我执行的代码 SQLLorader是Statement对象, 然后传入的Server.couter 是int型 后面4个都是 string型 ,我在sql里面确实创建了 user表, 字段也都建立了, 我想问是不是 我这句insert语句 错误?? SQL语句中 引入java变量 不能用这种形式?

下面提示的“ace”字段 就是上面 getName的数据
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'ace' in 'field list'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2828)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2777)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:949)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:795)
at Server.receive.register(Server.java:135)
at Server.receive.run(Server.java:96)
...全文
355 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码间的舞者 2014-04-03
  • 打赏
  • 举报
回复
引用 5 楼 benluobobo 的回复:
是单引号的问题,建议在出现sql错误的时候,打印出你的SQL语句,在客户端先执行通过,就可以准确定位错误
+1
binecy 2014-04-03
  • 打赏
  • 举报
回复
支持一楼
振哥哥 2014-04-03
  • 打赏
  • 举报
回复
同意1楼,加上单引号。 在java程序中向数据库添加数据,一种是添加明确的信息,一种是添加即时录入的信息。 例1:

 String sql="INSERT INTO studentuser(id,name,password,sex,mail,college)value" +
		   		"(4110415,'张振',4110415,'男','zhang@gmail','计算机科学与技术学院')";
这种即时添加明确的信息,这个时候,字符串常数要用单引号(英文符合)括起来; 例2:

Scanner reader=new Scanner(System.in);
	   System.out.println("请输入学号:");
	   int id=reader.nextInt();
	   System.out.println("请输入姓名:");
	   String name,password,sex,mail,college;
	    name=reader.next();
	    System.out.println("请输入密码:");
	    password=reader.next();
	    System.out.println("请输入性别:");
	    sex=reader.next();
	    System.out.println("请输入邮件:");
	    mail=reader.next();
	    System.out.println("请输入学院:");
	    college=reader.next();
	    String sql2="INSERT INTO studentuser(id,name,password,sex,mail,college)" +
	    		"values("+id+",'"+name+"','"+password+"','"+sex+"','"+mail+"','"+college+"')";    		
这种传进变量的,实际情况:‘ ”+name+" ',即一个单引号括住了双引号,(单引号和双引号之间没有空格,这里是为了看的清楚);
gbwl_cgl 2014-04-03
  • 打赏
  • 举报
回复
1 L 正解
benluobo 2014-04-03
  • 打赏
  • 举报
回复
是单引号的问题,建议在出现sql错误的时候,打印出你的SQL语句,在客户端先执行通过,就可以准确定位错误
lileibuaa22 2014-04-03
  • 打赏
  • 举报
回复
1L正解。。。 少年,varchar之类的加上单引号吧
KeZhuang_ 2014-04-03
  • 打赏
  • 举报
回复
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'ace' in 'field list' 错误信息:未知字段ace在list表里,看下mysql里的表去
-江沐风- 2014-04-03
  • 打赏
  • 举报
回复
把改加的单引号加上;
  • 打赏
  • 举报
回复
varchar类型的 后面那四个要加单引号吧 而且还有一个错误,最后sql里不要加分号; SQLLoader.execute("INSERT INTO user(counter,name,password,sex,age) VALUES("+Server.counter+",'"+user.getName()+"','"+user.getPassword()+ "','" +user.getSex()+ "','"+user.getAge()+"')");

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧