我正在尝试在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();
}
}
%>
答案 0 :(得分:0)
创建表不是别的,它也是一个简单的SQL查询,就像你可以执行该查询的任何其他select/update
查询一样。
更多关注prepared statement
并使用它。不要像那样执行普通的sql查询它可能导致sql注入。