从用户输入值在MySql中创建表

时间:2014-01-05 07:46:53

标签: java mysql database jsp

我正在尝试在MySQL数据库中创建一个表,其中没有字段是可变的,并且它们的大小是不变的。是否可以从用户输入值创建数据库?

我创建了两个JSP文件

readData.jsp

<form method="post" action="makeDB.jsp" name="testForm">        

        Name <input class="input_txt" id="surName" name="surName" type="text" maxlength="30">                           
        Type <select id="mySelect"  name="surType">
                <option>Choose one:</option>
                <option>Voting</option>
                <option>Application</option>
                <option>Invitation</option>                         
            </select>               
        Description<textarea class="input_txt" id="surDescrip" name="surDescrip" rows="2" cols="30" maxlength="1200">
        </textarea>

        Question <input class="input_txt" id="Ques" name="Ques" type="text" maxlength="1020"><br /><br />
            Answer Option 1 : <input class="input_txt" id="opt1" name="AnsOption1" type="text" maxlength="100"><br />
            Answer Option 2 : <input class="input_txt" id="opt2" name="AnsOption2" type="text" maxlength="100"><br />
            Answer Option 3 : <input class="input_txt" id="opt3" name="AnsOption3" type="text" maxlength="100"><br />
            Answer Option 4 : <input type="hidden" id="OptionCount" name="OptionCount">


        <input id="sub" type="submit" value="Start Creating DB">

</form>

makeDB.jsp

<%!
    // Variables 
    Connection conn = null;
    Statement stmt = null;      
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/crDB";
    static final String USER_NM = "foo";
    static final String PASS_WRD = "bar";
    static final String MyDB_Name = "Something";

    public void makeDB(String MyDB_Name, String SURVEY_NAME, String SURVEY_TYPE, String SURVEY_DESCRIPTION, String QUESTION, String ANS1, String ANS2, String ANS3) {

    try {

            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER_NM, PASS_WRD);
            stmt = conn.createStatement();
            String query = "CREATE TABLE "+MyDB_Name+" ("+SURVEY_NAME+")........."; 
            stmt.executeUpdate(query);

            stmt.close();
            conn.close();

        }  catch (Exception e) {

            //Handle errors for Class.forName
            e.printStackTrace();    
        }    

    } 

%>

1 个答案:

答案 0 :(得分:0)

创建表不是别的,它也是一个简单的SQL查询,就像你可以执行该查询的任何其他select/update查询一样。

更多关注prepared statement并使用它。不要像那样执行普通的sql查询它可能导致sql注入。