2015-05-12 86 views
2

我想將數據插入到我的sqlite數據庫中,但使用一個變量作爲應該輸入數據的表的名稱。如何插入數據到表名作爲變量的sqlite數據庫

try { 

      Random rand = new Random(); 
      uniqueID = rand.nextInt(9998) + 1; //Generates a random number from 1 - 9999 inclusively 
      String dateStart = day1.getText() + "/" + month1.getText() + "/" + year1.getText(); 
      String dateEnd = day2.getText() + "/" + month2.getText() + "/" + year2.getText(); 
      String projectN = projectName.getText(); 
      String addr = address.getText(); 
      //String engineerN = engineerName.getText(); 
      //String engineerP = engineerPassword.getText(); 

      Class.forName("org.sqlite.JDBC"); 
      conn2.setAutoCommit(false); 


      PreparedStatement ps = conn2.prepareStatement("insert into "My table name" (uniqueid,name,address,startingdate,estcompletion) values(?,?,?,?,?,?)"); 
      ps.setInt(1, uniqueID); 
      ps.setString(2, projectN); 
      ps.setString(3, addr); 
      ps.setString(4, dateStart); 
      ps.setString(5, dateEnd); 
      //ps.setString(6, engineerN); 

      ps.execute(); 

      ps.close(); 
      conn2.commit(); 
      conn2.close(); 
      } 
    catch (Exception e1) { 
      System.err.println(e1.getClass().getName() + ": " + e1.getMessage()); 
      System.exit(0); 
      } 
     } 
    } 
public String JJI() { 
    return projectName.getText(); 

} 
} 

「我的表名」在準備好的聲明就是我想要把我的表名得到它從projectName.getText()的地方;最後。用戶在另一個類中輸入projectname.getText。 謝謝你的幫助!在一個字符串變量

回答

0
  1. Store中的表名(你怎麼樣):​​

  2. 使包含您的SQL查詢的查詢變量:

String query = "insert into '" + tableName + "' (uniqueid,name,address,startingdate,estcompletion) values(?,?,?,?,?,?)";

  1. 如果您想要插入變量,請替換「?」與你在你的代碼已經做了你的變量名:

    ps.setInt(1, uniqueID); ps.setString(2, projectN); ps.setString(3, addr); ps.setString(4, dateStart); ps.setString(5, dateEnd);

  2. 執行查詢:

PreparedStatement ps = conn2.prepareStatement(query); ps.execute();

+0

我愛你的男人。謝謝你的答案^ - ^幫助噸。 –

+0

@SkibRs祝你好運! – moffeltje

+0

您的第三點(將值連接到查詢中)是非常糟糕的形式,它鼓勵SQL注入。原來的解決方案在這方面已經是正確的解決方案。 –

相關問題