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

ここでデータがテーブルに挿入されます。ただし、3 つのチェックボックスをすべて選択すると、データは次のように挿入されます。

Id   Series Symbol

1    null   null

null a      null

null null   b

しかし、データを次のように挿入したい:

Id Series Symbol

1  a      b

この出力を得るには、どのような変更を加える必要がありますか?

4

1 に答える 1

0
  1. データベースの更新は、コントローラーに配置することをお勧めします。JSP ページは、結果の表示に適しています ( MVCパターンを参照) 。
  2. 動的 SQL を使用してデータベース テーブルを決定することは本質的に危険であり、攻撃の対象になる可能性があります。
  3. 現在のコードは入力要素をループし、要素ごとにデータベース テーブルに新しい行を挿入します。やりたいことは、ツリーの値を (フォーム入力から) 集めて、1 行だけ挿入することです。例えば

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

于 2012-05-03T11:28:39.923 に答える