繁体   English   中英

MySQL插入字段列表中的未知列

[英]MySQL insert into unknown column in field list

我越来越

MySQLSyntaxErrorException:“字段列表”中的未知列“ UUID”

使用此代码:

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " +
            "VALUES ( `UUID` , " + " `TestName` , 8 , `Female` , `TestBios`)";

我已经创建了表格。

不要以这种方式编写查询,因为它不安全(SQL注入),并且可能比以下方法慢很多:

对其中包含变量的查询使用准备好的语句:

String sql="INSERT INTO players (player_uuid , name , age , gender , bios) "+
" VALUES (?,?,?,?,?)";
PreparedStatement pstmt=connection.prepareStatement(sql);
pstmt.setString(1,"UUID");
pstmt.setString(2,"TestName");
pstmt.setint(3,8);
pstmt.setString(4,"Female");
pstmt.setString(5,"TestBios");
pstmt.execute();
pstmt.close();

数据库将缓存准备好的语句的执行计划,这样可以节省下一次使用同一条语句的时间(无论值如何,这都可以节省很多时间,但是某些数据库将根据这些值来调整计划)。 使用刀片时,在大多数情况下节省的成本是最小的,而使用选择件时,整体节省的成本可能是可观的。

您需要将值放在引号中,以将它们视为字符串。

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " +
        "VALUES ( 'UUID' , " + " 'TestName' , 8 , 'Female' , 'TestBios')";

char保留用于保留列名。

您的意思是说如下。 用单引号替换那些背景

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) 
VALUES ( 'UUID' ,'TestName' , 8 , 'Female' , 'TestBios')";

使用代码中的此代码。 发生错误,是因为您没有在SQL查询中对字符串值使用单整数。 实际上,最好的方法是使用PreparedStatement。

 String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) "
            + "VALUES ( 'UUID' , " + " 'TestName' , 8 , 'Female' , 'TestBios')";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM