簡體   English   中英

嘗試從Java創建SQL表時出現語法錯誤

[英]Syntax error trying to create an sql table from Java

我要創建一個表,將從文本字段插入該表的名稱。 但是,當我運行查詢時,它給我一個錯誤,對此有任何幫助嗎? 我將代碼粘貼到這里:

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();

我將從假設您的'" gaff是一個錯字開始,因為它甚至不應該以這種方式編譯(我編輯了問題以解決以后的問題)。

除此之外,您不必將表名用單引號引起來。 不是:

創建表'tablename'(...)

您只需寫:

CREATE TABLE表名(...)

但是您甚至不應該做那么多,因為您是從文本字段獲取表名的。 阻止某人在該文本字段中輸入類似內容的方法是:

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

(當然,假設您在某處有一個用戶表)。 重要的是要記住,攻擊者可能會后第一次進入任意 SQL是很重要的; ,您的數據庫將盲目運行它。

TableNumber好...一個數字嗎? 如果是這樣,則可能導致語法錯誤。

看起來撇號和引號在TableNumber (右側)周圍是倒置的,這會產生編譯器錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM