尝试从Java创建sql表时出现语法错误

时间:2010-06-09 21:29:31

标签: java sql

我想创建一个表,这个表的名称将从文本字段中插入。但是,当我运行查询时,它给了我一个错误,对此有任何帮助吗?我会在这里粘贴代码:

public boolean CreateTable() {
  TableNumber = jTextField4.getText();

  try {            
    String password = null;
    String s = "CREATE TABLE '"+TableNumber+ "' (Item char(50),Price char(50))";

    ConnectionForOrders();
    stmt = conn.createStatement();
    stmt.executeUpdate(s);

    boolean f = false;
    ConnectionForOrdersclose();

3 个答案:

答案 0 :(得分:3)

我首先假设你的'" gaff是一个拼写错误,因为它甚至不应该以这种方式编译(我编辑了问题以便为后来的那些修复它)。

除此之外,您不要将表名括在单引号中。它不是:

  

CREATE TABLE'tablename'(...)

你只需写:

  

CREATE TABLE tablename(...)

但你甚至不应该这么做,因为你从文本字段中获取了你的tablename。什么是阻止某人在该文本字段中输入这样的内容:

  

a(b int); DROP TABLE用户; -

(当然假设你有一个用户表)。重要的是要记住,攻击者可以在第一个;之后输入任意任意sql,并且您的数据库将盲目地运行它。

答案 1 :(得分:1)

TableNumber好吧......一个数字?如果是,则可能导致语法错误。

答案 2 :(得分:1)

看起来撇号和引号在TableNumber(右侧)周围反转,这会产生编译错误。