动态数据库和SQL查询

时间:2013-06-04 13:31:45

标签: java content-management-system workflow dynamic-data

这是我需要创造的。 我有一个网站,用户可以根据自己的需要/要求来设计申请表。基本上,网站上有一个HTML设计器可以执行此操作。用户可以拖放HTML组件,然后以纯HTML格式创建应用程序表单。例如,为了创建“个人部分”,用户可以拖动&删除标签组件和TextBox组件,并将标签文本设置为“FirstName”,依此类推。我需要根据一个用户创建的表单创建一个数据库。如果他创建的个人部分只包含FirstName和LastName,那么创建的表应该只包含那两个cols。 (即,在创建表单时由用户决定列名,用于插入和更新DB字段的SQL查询都应该动态执行)。请帮我解决这个问题。有什么建议的模式适用吗? (Web应用程序是使用Java创建的)

任何帮助都将受到极大的赞赏

由于

1 个答案:

答案 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());  
  }