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

标签 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>

ma​​keDB.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 注入(inject)。

关于java - 根据用户输入值在 MySql 中创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20931309/

相关文章:

php - SQLSTATE[42000] 聚合函数错误

php - 如何使用 php 从远程机器转储和下载 mysql?

java - 来自单线程执行器的 RejectedExecutionException

java - 检查泛型方法中的类型

mysql - 从与其他列分组的 MySql 表列中获取唯一值

database - Redis DB,是否可以为某些数据库启用快照而不为其他数据库启用快照?

php - 从mysql表中删除一些内容时如何显示进度条

文件和数据结构中的 Java 处理行

java - 以非交互方式将多行标准输入传递给交互式 Java 命令行程序

java - 如何在界面中声明列表(并向列表添加内容)