繁体   English   中英

根据用户输入值在MySql中创建表

[英]Create Table in MySql from User Input Value

我正在尝试在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();    
        }    

    } 

%>

创建表不是别的什么,它还是一个简单的sql查询,就像您可以执行该查询的任何其他select/update查询一样。

并且更多地关注prepared statement并使用它。 不要执行这样的普通sql查询,这可能会导致sql注入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM