2012-05-03 18 views
0

テーブルを作成してテーブルにデータを挿入するコードを試しています。 私はテーブルを作成し、チェックボックスを使ってユーザーが選択したフィールドのデータのみを挿入したいと考えています。チェックボックスで選択したデータを挿入する

Id Series Symbol 

1 null null 

null a  null 

null null b 

しかし、私はデータを挿入することにしたい:私は、データとして挿入されているすべての3つのチェックボックスを選択した場合、データがtable.Butに挿入されている。ここ

<%@ 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); 
    } 
%> 

: これは私のJSPコードであります次のようになります。

Id Series Symbol 

1 a  b 

この出力を得るために必要な変更はありますか?

+0

OMG、なぜあなたはJSPですべてのことをやっていますか?これはとても古風なことです。私は人々がJSPコードでスクリプトレットを使用するとき、コンテナベンダが警告/エラーを投げ始めるのは時間がかかると感じています。 – adarshr

+0

可能な異なる入力値とこれらの異なる入力の欲しい結果を含めるように質問を明確にしてください。 – erikxiv

+0

私はユーザーにテーブルを作成するオプションを与えたい。 9つのチェックボックスがあり、それぞれがテーブルの列を表します。ユーザーは、これらのチェックボックスを選択してテーブルを作成できるようになりました。 ID、SERIES、SYMBOLの3つのチェックボックスを選択したとします。次に、これらのフィールドのテキストボックスにデータを入力するフォームがあります。送信をクリックした後、上記のフォームが実行され、これらの3つのフィールドのテーブルは、ユーザーが入力したデータを使用してデータベースに作成する必要があります。 – user1358548

答えて

0
  1. データベースを更新する方が、コントローラを使用する方がよいでしょう。 JSPページは、データベース・テーブルを決定するために、動的SQLを使用し
  2. は本質的に危険であると
  3. あなたの現在のコードは、入力要素をループ攻撃の標的にすることができ、各要素が挿入のために(MVCパターンを参照)の結果を表示するためのより良い使用されていますデータベーステーブルの新しい行あなたがしたいのは、(フォーム入力から)ツリーの値をアセンブルし、1行だけを挿入することです。例えば。

    テーブルにINSERT(ID、SERIES、SYMBOL)VALUES(?、?、?)

+0

同じ列名を取得するたびに必ずしもわからないことがあります。これらは、チェックボックスを使用してユーザーが選択した名前です。スイッチケースは、どのチェックボックスが選択されているかを知るために使用されます。さらに6つのチェックボックスがあります。しかし、試用目的で私はそれらのうち3つだけを使用しています。そのため、私は動的SQLを使用しています。 – user1358548

+0

@adarshr:私はインターンで、jspですべてをやっています。 – user1358548