我jsp的代码  比如在String sql是这样的   
   "select c&w from table "+  可是总在这里报错  我觉得是 &字符的问题  请问怎么处理  我用的是mysql

解决方案 »

  1.   

    使用转义,mysql有专门的转义函数:mysql_real_escape_string
      

  2.   

    20.4.13 mysql_escape_string()
    unsigned int mysql_escape_string(char *to, const char *from, unsigned int length) 20.4.13.1 说明
    把在from中的字符串编码为在一条SQL语句中可以发给服务器的转义的SQL字符串,将结果放在to中, 并且加上一个终止的空字节。编码的字符是NUL(ASCII 0)、‘\n’、‘\r’、‘\’、‘'’、‘"’和Control-Z(见7.1 文字:如何写字符串和数字)。由from指向的字符串必须是length个字节长。你必须分配to的缓冲区至少length*2+1个字节长。(在更坏的情况,每个字符可能需要使用2个字节被编码,并且你需要为终止空字节的空间) 当mysql_escape_string()返回时,to的内容将是空字符终止的字符串。返回值是编码后的字符串的长度,不包括终止空字符。 20.4.13.2 范例
    char query[1000],*end;end = strmov(query,"INSERT INTO test_table values(");
    *end++ = '\'';
    end += mysql_escape_string(end,"What's this",11);
    *end++ = '\'';
    *end++ = ',';
    *end++ = '\'';
    end += mysql_escape_string(end,"binary data: \0\r\n",16);
    *end++ = '\'';
    *end++ = ')';if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
    {
       fprintf(stderr, "Failed to insert row, Error: %s\n",
               mysql_error(&mysql));
    }例子中所用的strmov()函数被包括在mysqlclient库中且功能类似于strcpy(),但是返回一个指向空终止的第一个参数的指针。 20.4.13.3 返回值
    放进to的值的长度,不包括终止空字符。20.4.13.4 错误
    无。