这是我需要创造的。 我有一个网站,用户可以根据自己的需要/要求来设计申请表。基本上,网站上有一个HTML设计器可以执行此操作。用户可以拖放HTML组件,然后以纯HTML格式创建应用程序表单。例如,为了创建“个人部分”,用户可以拖动&删除标签组件和TextBox组件,并将标签文本设置为“FirstName”,依此类推。我需要根据一个用户创建的表单创建一个数据库。如果他创建的个人部分只包含FirstName和LastName,那么创建的表应该只包含那两个cols。 (即,在创建表单时由用户决定列名,用于插入和更新DB字段的SQL查询都应该动态执行)。请帮我解决这个问题。有什么建议的模式适用吗? (Web应用程序是使用Java创建的)
任何帮助都将受到极大的赞赏
由于
答案 0 :(得分:0)
您可能需要为某种表单构建器编写代码,以便动态构建表单,并可以从以下代码中获取帮助以创建动态sql表。这只是提示不是您问题的完美解决方案
尝试{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "123");
Statement st = con.createStatement();
System.out.println("connection has been made ");
Scanner scanner = new Scanner(System.in);
System.out.println("please enter table name ");
String tableName = scanner.next();
String strr = null;
System.out.println("Enter no of columns you like to use: ");
int noc = scanner.nextInt();
for (int i = 1; i <= noc; i++) {
BufferedReader bf = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Enter column name with type ");
String s1 = bf.readLine();
if (strr == null) {
strr = s1;
} else {
strr = strr + s1;
}
}
st.executeUpdate("create table " + tableName + "(" + strr + ")");
System.out.println("your table " + tableName
+ " has been created!!!");
ResultSet rs = st.executeQuery("SELECT * FROM " + tableName);
ResultSetMetaData rsmd = rs.getMetaData();
int NumOfCol = rsmd.getColumnCount();
System.out.println("Number of Columns of your table =" + tableName
+ " " + NumOfCol);
System.out.println("Column names are ");
for (int i = 1; i <= NumOfCol; i++) {
System.out.println(rsmd.getColumnName(i));
}
String strn = null;
System.out.println("please enter values you need to insert");
for (int i = 1; i <= NumOfCol; i++) {
String s5 = scanner.next();
if (strn == null) {
strn = s5;
} else
strn = strn + s5;
}
System.out.println(strn);
st.executeUpdate("insert into " + tableName + " values" + "("
+ strn + ")");
System.out.println("your table " + tableName
+ " has been filled!!!");
con.close();
System.out.println("connection has been colsed ");
}
catch (Exception e) {
System.out.println(e.getMessage());
}