2014-02-12 108 views
2

有沒有辦法在JSP中動態創建MySQL表?理想情況下,它將用於論壇中用戶鍵入線程的名稱,它會在數據庫中創建一個具有該名稱的表。在JSP中創建MySQL表

雖然我看不到它是否真的能夠實現,但我沒有工作,公平我沒有想到會這樣。

這是我試過,

<sql:query var="dbData1"> 
    CREATE TABLE test (id int NOT NULL) 
</sql:query> 
+0

,如果你有很多的用戶,您將獲得的表很多。爲什麼不使用User_Id等標準的關係數據庫設置? –

+1

這是我想到的唯一方法,但它只會被最多20人作爲內聯網論壇使用,我看不到它被使用了那麼多,我願意接受建議,儘管 – Crouch

回答

2

您需要定義一個dataSource和同樣在query聲明中稱。

例1

定義數據源這樣的:

<sql:setDataSource var="dsn" driver="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost/my_database_name_here" 
    user="userName" password="pass_code_here"/> 

而且,參考同一DSN在查詢構造是這樣的:

<sql:query dataSource="${dsn}" var="dbData1"> 
    CREATE TABLE test (id int NOT NULL); 
</sql:query> 

這種建議不要在jsp中定義dsn被練習。
在上面的示例中,您可以看到數據庫訪問憑據公開。
您最好在您的服務器配置文件(例如Tomcat的server.xml)中定義DSN並使用它。

例2

如果您使用的是Tomcat,然後定義data source in Server.xml,就像這樣:

<Resource 
    name="jdbc/dsn_on_my_db" 
    auth="Container" 
    type="javax.sql.DataSource" 
    username="yourusername" 
    password="yourpassword" 
    driverClassName="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost:3306/my_db_name_here" 
    maxActive="15" 
    maxIdle="7" 
    validationQuery="Select 1" /> 

而在JSP頁面是指這樣的DSN:

<sql:setDataSource dataSource="jdbc/dsn_on_my_db" /> 

並且,使用您在發佈中定義的查詢:

<sql:query var="dbData1"> 
    CREATE TABLE test (id int NOT NULL); 
</sql:query> 

另外,

<sql:query var="dbData1" 
    dataSource="${applicationScope.dsn_on_my_db}"> 
+0

歡迎您的回答數據源已經提供,它已經連接到數據庫了,我在現有的jsp應用程序中測試了邏輯 – Crouch