【问题标题】:Dynamic database and SQL queries动态数据库和 SQL 查询
【发布时间】:2013-06-04 13:31:44
【问题描述】:

这是我需要创建的。 我有一个网站,用户可以根据他们的需要/要求来设计申请表。基本上,网站中有一个 HTML 设计器可以执行此操作。用户可以拖放 HTML 组件,从而在纯 HTML 中创建应用程序表单。例如,为了创建“个人部分”,用户可以拖放标签组件和文本框组件,并将标签文本作为“名字”等等。我需要根据一个用户创建的表单创建一个数据库。如果他仅使用 FirstName 和 LastName 创建了个人部分,则创建的表应该只有这两个列。 (即,由用户在创建表单时决定 col 名称,用于插入和更新 DB 字段的 SQL 查询都应该动态执行)。请帮我解决这个问题。有什么建议的模式可以应用吗? (Web 应用程序是使用 Java 创建的)

任何帮助将不胜感激

谢谢

【问题讨论】:

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


    【解决方案1】:

    您可能需要为某种形式的表单构建器编写代码,该构建器可以即时构建表单,并且可以从以下代码中获取帮助来创建动态 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());  
      }  
    

    【讨论】:

    • 在我的问题中,Db 表 col 是根据用户设计的表单类型生成的。他只需拖放 HTML 组件即可创建设计。
    • 是的,我明白了你的意思,这就是为什么我建议你寻找某种形式的构建工具,它可以动态创建 html Web 表单并将从这些动态 Web 表单发布的值存储到数据库中。您可能会发现以下链接很有用code.google.com/p/jquery-form-builder-plugin
    猜你喜欢
    • 2016-09-01
    • 2018-04-02
    • 1970-01-01
    • 2018-04-12
    • 2014-02-01
    • 2020-05-14
    • 2010-10-16
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多