为什么我在mysql命令控制台能执行的Insert语句放到java代码里只能insert数字了?
代码如下:
...
String name = "abc";//这里改为数字可以通过,如"123"
...
String sql = "Insert into sms(TaskID,Discribe,Code,Number,Type,State1,State2,Pname,Usertype) values("+name+","+discribe+","+code+","+number+","+type+','+state1+','+state2+','+pname+','+user+");";
statement.executeUpdate(sql);
...
报错
java.sql.SQLException: Column not found: Unknown column 'abc' in 'field list'这里的TaskID,Discribe等是char型求教

解决方案 »

  1.   

    char类型要用'包起来
    String类型要用"包起来
      

  2.   

    ...................
    //---------------送个笑话----------------------
    煤矿发生事故,一无名男尸,只幸存下半身,叫来村里村妇前来辨认。  
      妇人甲看了看:不是我男人,不是村长,也不是村支书;
      妇人乙:不是我姐夫,不是村会计;
      一个寡妇过来,摸了摸:哎,都回去吧,不是咱村的! www.xiaohua007.com
      

  3.   

    你把 sql 打印出来看看就清楚了,跟你在 mysql 命令控制台中敲的内容肯定不一样!差别在于字符串的引号。给字符型字段赋值,应该把字符串值用单引号括起来,你在 mysql 命令控制台里肯定敲了单引号,而你在 java 程序里执行的 sql 语句却没有加单引号。MySQL 有一个功能,如果期望一个字符串值,而你输入的是一个整数值,它会自动转换成字符串形式,所以你用 123 的时候是能通过的。但如果换成 abc 的话,就是 SQL 语法错误了。