Java 数据库插入语句
每次执行查询时是否需要创建新语句 这行不行(我已经与数据库建立了连接) 我使用以下代码创建表:Java 数据库插入语句,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,每次执行查询时是否需要创建新语句 这行不行(我已经与数据库建立了连接) 我使用以下代码创建表: Statement.execute("CREATE TABLE IF NOT EXISTS PS2" + "(uuid VARCHAR(45)," + "team VARCHAR(20)," + "kills INTEGER," + "deaths INTEGER,"
Statement.execute("CREATE TABLE IF NOT EXISTS PS2"
+ "(uuid VARCHAR(45),"
+ "team VARCHAR(20),"
+ "kills INTEGER,"
+ "deaths INTEGER,"
+ "rank_lvl INTEGER,"
+ "rank_name VARCHAR(25),"
+ "pts INTEGER)");
在执行代码之后,就创建了数据库。之后,在尝试插入行之后,将不会创建该行
uuid
是SQL的保留关键字,您应该用引号将其括起来:`uuid`您使用的是反勾号`
而不是引号'
来包装您的值。反勾号仅用于换行列名
Statement.execute("INSERT INTO PS2 (`uuid` , team, kills , deaths , rank_lvl, rank_name, pts) "
+ "VALUES"
+ " ('" + name.toString() + "' , 'none' , 0 , 0 , 1 , 'Starter' , 0)");
正如我所提到的,你应该小心
UUID
可能是其中之一(例如,对于Oracle V9i数据库),因此您应该用反勾号将其包装。反勾号作为字符串引号是否正确?试试“
没有错误,数据库中没有行,@AlexK。我正在测试您使用的RDBMS是什么?其中一些是缓存数据,当您不提交或刷新数据时,没有数据写入磁盘。那么第一个问题呢?永远不要对SQL使用concat字符串。使用可重用的
PreparedStatement。创建数据库时没有使用quotesTables包装。可以使用保留字创建数据库,但要在语句或子句中使用它们,您必须将它们用引号包装。我会手动尝试此请求,以了解问题来自请求或代码。它手动工作:S,使用这段代码:将值('460b9dd9-af9c-4942-a49d-28D3658E7A','none',0,0,1',Starter',0)插入PS2(uuid,team,kills,DEATIONS,rank_lvl,rank_name,pts)中执行INSERT语句时没有错误,但没有创建行!然后它来自其他地方。你在使用什么样的数据库?。任何INSERT
是否通过PHPMyAdmin工作(甚至在其他表上)?
Statement.execute("INSERT INTO PS2 (`uuid` , team, kills , deaths , rank_lvl, rank_name, pts) "
+ "VALUES"
+ " ('" + name.toString() + "' , 'none' , 0 , 0 , 1 , 'Starter' , 0)");