Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中动态创建表定义?_Java_Mysql_Jdbc - Fatal编程技术网

如何在Java中动态创建表定义?

如何在Java中动态创建表定义?,java,mysql,jdbc,Java,Mysql,Jdbc,我试图用java创建一个MySql create table语句。然而,我面临的挑战是,我的表的列名存储在用户输入的字符串数组中。如果我知道列名,就可以直接运行它,但这次我尝试根据我在字符串数组中收到的数据动态创建一个表 如何将其动态添加到CREATETABLE语句中?有什么帮助/提示吗 下面的创建表是一个静态表 static String[] StopNamesForDB; Set<String> set = new LinkedHashSet<String

我试图用java创建一个MySql create table语句。然而,我面临的挑战是,我的表的列名存储在用户输入的字符串数组中。如果我知道列名,就可以直接运行它,但这次我尝试根据我在字符串数组中收到的数据动态创建一个表

如何将其动态添加到CREATETABLE语句中?有什么帮助/提示吗

下面的创建表是一个静态表

    static String[] StopNamesForDB;

    Set<String> set = new LinkedHashSet<String>(StopNames);
    StopNamesForDB = new String[set.size()];

        for (String string : set) {


            StopNamesForDB[i] = string;
            i++;
        }


    String sql = "CREATE TABLE Route3 "+
              "(id INTEGER not NULL, " + 
              " first VARCHAR(255), " +
              " last VARCHAR(255), " + 
              " age INTEGER, " +
              " PRIMARY KEY ( id ))";
     stmt.executeUpdate(sql);
静态字符串[]StopNamesForDB;
Set Set=newlinkedhashset(StopNames);
StopNamesForDB=新字符串[set.size()];
for(字符串:设置){
StopNamesForDB[i]=字符串;
i++;
}
String sql=“创建表路由3”+
“(id整数不为空,”+
“第一个VARCHAR(255),”+
“最后一个VARCHAR(255),”+
年龄整数+
“主键(id))”;
stmt.executeUpdate(sql);

您创建了一个表,并且可以在以后知道列时对其进行更改。您可以说列名包含在字符串数组中。列数据类型如何?它们都一样吗(即varchar())?在静态示例中,包括主键和必需的NOTNULL约束。在要创建的动态表中,所有列都可以为空吗?有主键吗?主键是用户可定义的(还是简单的int)?这些问题的答案将决定如何创建代码来动态创建表。
     StringBuilder sql = new StringBuilder();

     sql.append("create table route3(");

     for(String name : StopNamesForDB)
     {
         sql.append(name).append(",");
     }

     sql.append("PRIMARY KEY (").append(StopNamesForDB[0]).append(")");

     sql.append(")");

     stmt.executeUpdate(sql.toString());