【问题标题】:How to create table name acording to input value?如何根据输入值创建表名?
【发布时间】:2019-11-05 21:54:41
【问题描述】:

我想根据用户如何选择值来制作表格。如果用户选择了一些值...这个值在 servlet 中用作表名。 我试过这个......它有效吗?

String tbl = Branch + Year + Month; 

st.executeUpdate("CREATE TABLE" + tbl + "(Month varchar(10),purva varchar(10),yash varchar(10)");

【问题讨论】:

  • 也许您可以详细解释一下您的应用程序是如何工作的,以及为什么您允许用户创建表。这是一个非常不寻常的要求,很可能您应该只允许用户向已经存在的表添加信息。
  • 就像@TimBiegeleisen 所说,这可能不是一个好主意。但是,声明缺少几个空格试试这个:st.executeUpdate("CREATE TABLE " + tbl + " (Month varchar(10),purva varchar(10),yash varchar(10)");
  • 指定模式名并将表名用方括号括起来,例如 st.executeUpdate("CREATE TABLE dbo.[" + tbl + "] (Month varchar(10),purva varchar(10) ,yash varchar(10)");
  • .它有效吗?:你的测试应该告诉你。你测试过你的代码吗?
  • 多个相同的表通常是一个错误。不能把所有数据放到一个表里吗?

标签: java sql ddl create-table


【解决方案1】:

抛开潜在的 SQL 注入攻击,您在表名周围缺少空格:

st.executeUpdate("CREATE TABLE " + tbl + " (Month varchar(10), purva varchar(10), yash varchar(10)");
// Here ----------------------^-----------^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多