我想準備使用Excel考勤表,並希望該文件進一步節省.csv格式將這個銜接與mysql.How我可以通過JDBC程序動態創建一個表名。 任何幫助,不勝感激。在JDBC PROGRAME動態創建的表名
0
A
回答
2
你必須產生由「字符串撲」的SQL。例如:
String tableName = ...
String createTableSQL = "Create table " + tableName;
Statement statement = connection.createStatement(createTableSQL);
statememt.execute();
等。
警告:這種方法存在風險。特別是,如果您基於用戶輸入的字符串或從電子表格或CSV或其他內容讀取的字符串生成表名,則可以輸入實際上是SQL語句的字符串。最終結果是他們可能欺騙你的程序對你的數據庫執行有害的SQL。
對這種正常的防禦是使用PreparedStatement,並使用佔位符所有的SQL中的用戶提供詳細信息。不幸的是,這隻適用於注入SQL值。你不能用表名,列名和其他各種東西來做到這一點。
1
你可以寫一個.sql+shell
腳本mysql command-line-client
和mysql-dataloader
骨架應該是這樣的:
- 生成
.csv
文件中使用您的應用程序命名爲attendence_dd_mm_yyyy.csv
。 - 'Shell命令':創建一些邏輯(例如
attendence_dd_mm_yyyy
)的基礎TABLE_NAME。 - 'Mysql command':使用
mysql -u usename -ppassword -e <Create table tablename> <fixed columns>
。 - '數據加載器':使用
mysql -u usename -ppassword -e LOAD DATA INFILE ...
將csv加載到新創建的表中。
我知道我有點偏離主題仍暗示該選項,因爲
- 數據加載器是非常 - 非常快速和容易獲得的。
- 它會解決你的數據加載問題,這必須在表創建後完成。
- 您無需將
DDL permission
添加到您的應用程序代碼中。如果您的代碼進入infinite loop
或類似的問題可能會發生問題。 - 問題將
propagate to DB
也影響其他連接的應用程序(如果有)。 - 如果你是一個Web應用程序或similiar,
SQL-Injection
是HUGE CONCERN
爲你的方法。
如果您使用的任何其他資料庫,請在similiar線工作。
相關問題
- 1. 創建表 - 動態名稱的表
- 2. JDBC創建表
- 3. 通過Clojure JDBC動態創建表的函數不起作用
- 4. 按名稱動態創建表單?
- 5. 動態表創建
- 6. 創建動態表
- 7. 動態創建表?
- 8. 動態表創建
- 9. 創建動態名稱
- 10. 創建動態子域名
- 11. 創建變量名動態
- 12. 動態創建用戶名
- 13. 動態創建的錶行
- 14. 與輸入動態表名PLSQL動態遊標創建
- 15. 在SQL Server 2008中創建動態表名和表列?
- 16. 在python中創建動態文件名
- 17. 在循環中創建動態名稱
- 18. 在AngularJS創建NG-模型動態名
- 19. 在wp中創建動態子域名
- 20. 在python中動態創建變量名?
- 21. 包括動態類型名稱在內的動態類創建
- 22. Spring JDBC:如何創建表?
- 23. JDBC錯誤創建表
- 24. 在VBA中創建引用ListObjects表的動態命名範圍
- 25. 如何在ruby-on-rails中動態創建帶有動態列名的表?
- 26. 動態在表頭上創建表頭
- 27. 在表格中動態創建表格
- 28. 無法創建表與表的名稱空間動態
- 29. Dygraphs:updateOptions動態創建圖表
- 30. 動態創建表格
使用JDBC http://www.mkyong.com/jdbc/jdbc-statement-example-create-a-table/ – user75ponic
我建議修改你的計劃中的數據模型嘗試此表的創建。動態表格創建對我來說似乎不是一個好習慣,除非這個策略有一個很好的理由。 – LRA
@ LRA-完全同意你的看法。但是,如果仍然需要,OP不應該使用應用程序代碼來做到這一點。 –