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