2012-05-03 2 views
0

Я пытаюсь создать код, где я хочу создать таблицу и вставить данные в таблицу. Я хочу создать таблицу и вставить данные только для тех полей, которые выбраны пользователем с помощью флажка. Это мой код JSP:Вставка данных, выбранных с помощью флажков

<%@ page language="java" import="java.util.*"%> 
<%@ page import="java.sql.*" %> 
<% 
    try 
    { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String url = "jdbc:sqlserver://"; 
     Connection con = DriverManager.getConnection(url,"sa","SQL1423#3"); 
     Statement st=null; 

     String select[] = (String[]) session.getAttribute("a"); 
     String tblname=(String)session.getAttribute("tblname"); 
     //out.println(tblname); 
     //String select[] = request.getParameterValues("id"); 
     if (select != null && select.length != 0) 
     { 
      for (int i = 0; i < select.length; i++) 
      { 
       int ch=Integer.parseInt(select[i]); 
       //int counter=1; 
       //int ID=1; 
       switch(ch)    
       { 
        case 1 : 
         String idOne=request.getParameter("idOne"); 
         //out.println(idOne); 
         String idOneIns="insert into "+tblname+" (ID) values(?)"; 
         PreparedStatement pstmt = con.prepareStatement(idOneIns); 
         pstmt.setString(1, idOne); 
         //st=con.createStatement(); 
         int valueTwo = pstmt.executeUpdate(); 
         out.println("Inserted"); 
         break; 
        case 2 : 
         String ser=request.getParameter("series"); 
         String serIns="insert into "+tblname+" (SERIES) values(?)"; 
         PreparedStatement pst = con.prepareStatement(serIns); 
         pst.setString(1, ser); 
         int value = pst.executeUpdate(); 
         out.println("Inserted"); 
         break; 
        case 3 : 
         String sym=request.getParameter("symbol"); 
         String symIns="insert into "+tblname+" (SYMBOL) values(?)"; 
         PreparedStatement pstm = con.prepareStatement(symIns); 
         pstm.setString(1, sym); 
         int valueOne = pstm.executeUpdate(); 
         out.println("Inserted"); 
         break; 
       }//switch 
      }//for 
     }//if 
     st.close(); 
     con.close(); 
    }//try 
    catch(Exception e) 
    { 
     out.println(e); 
    } 
%> 

Здесь данные вставляются в table.But, если выбрать все три галочки, то данные, вставленные как:

Id Series Symbol 

1 null null 

null a  null 

null null b 

Но я хочу, чтобы данные, которые будут вставлены as:

Id Series Symbol 

1 a  b 

Какие изменения я должен внести, чтобы получить этот результат?

+0

OMG, почему ты делаешь все, что в JSP? Это так архаично. Я считаю, что поставщики контейнеров с высоким сроком давности начали бросать предупреждение/ошибку, когда люди используют скрипты в своем коде JSP. – adarshr

+0

Не могли бы вы уточнить свой вопрос, чтобы включить различные возможные входные значения и желаемые результаты этих разных входов? – erikxiv

+0

Хорошо. Я хочу дать возможность создать таблицу для пользователя. Есть 9 флажков, каждый из которых представляет столбец таблицы. Теперь пользователь должен иметь возможность создать таблицу, установив эти флажки. Предположим, он выбрал 3 флажка как ID, SERIES, SYMBOL. Тогда есть форма, в которой он предположительно вводит данные в текстовое поле для этих полей. После нажатия на отправку вышеуказанной формы необходимо выполнить, и таблица для этих 3 полей должна быть создана в базе данных с данными, введенными пользователем. – user1358548

ответ

0
  1. Обновление базы данных лучше вставить в контроллер. JSP-страниц лучше использовать для отображения результатов (см MVC рисунок)
  2. Использование динамического SQL для определения таблицы базы данных по своей природе опасны и могут быть направлены для нападения
  3. Ваш текущий код перебирает элементы ввода, и для каждого элемента вставляет новая строка в таблице базы данных. То, что вы хотите сделать, - собрать значения деревьев (из ввода формы) и вставить только одну строку. Например.

    INSERT INTO таблицы (ID, серия, SYMBOL) VALUES (?,?,?)

+0

Я не уверен, что каждый раз, когда я получаю одинаковые имена столбцов. Потому что это имена, выбранные пользователем, используя флажок. Ключ коммутатора используется для определения того, какие флажки выбраны. И еще 6 флажков. Но для пробных целей я использую только три из них. Вот почему я использую динамический SQL. – user1358548

+0

@adarshr: Я стажер, и я должен сделать все это в jsp. – user1358548

Смежные вопросы