如何使用 java 在 Oracle 中插入序列化数据

How to insert serialize data in Oracle using java

我从数据库中获取了一些列表值,并使用选中和未选中(1 或 0)保存了该值

我的 HTML 标记是:

  <div class="panel-body">
  <form action="" id = "buindEligibilityData">
    <table class="table">
        <s:iterator value="eligibilityList" status="status">
         <s:if test='%{lkpGroupId == "160100000005"}'>
            <tr id="eligibilityTrDiv">
         <td><input type="hidden" value="160100000005" name="gropuId"></td><td><input type="hidden" value="<s:property value='lkpDataName' />" name="lkpName"></td> <td><input type="hidden" value="<s:property value='lkpDataId' />" name="lkpDataId"></td><td > <s:property value='lkpDataName' /></td>
          <td> <div class="example"><div>
          <s:if test='%{chackBoxStatus == "1"}'>
          <input value="1" id="hid_<s:property value='lkpDataId' />" type="hidden" name="checkbox1"/>
          <input id="<s:property value='lkpDataId' />" class="chackBoxIdPrefix" type="checkbox" name="lkpDataIdcheckbox"  checked="checked">

          </s:if>
          <s:else>
          <input value="0" id="hid_<s:property value='lkpDataId' />" type="hidden" name="checkbox1"/>
           <input id="<s:property value='lkpDataId' />" class="chackBoxIdPrefix" type="checkbox" name="lkpDataIdcheckbox" >

          </s:else>
          <label for="checkbox2"><span></span>bind For Prefix</label></div></div></td>
          </tr>
        </s:if>
     </s:iterator>

        <tr><td colspan="3" align="center"> <input type="button" value="Save Change" class="btn-info" align="middle" onclick="buindDataForPrefix()"> </td></tr>
          </table>
    </form>
  </div>

onclick函数:

function buindDataForPrefix() {     
    var form_data = $jq("#buindEligibilityData").serialize();

    $jq.ajax({
                    type: 'post',
                    data:form_data, 
                    mimeType:"multipart/form-data",                 
                    url: "buindEligibilityDataAdmissionInfo.do",
                    success: function(data){                        
                        $jq("#eligibilityTrDiv").html(data);                                                            
                    },
                    complete: function(data){   

                    }                       
          });
}

Java代码:

 public String buindEligibilityData() {
    String[] logInInfo = (String[]) ActionContext.getContext().getSession()
            .get(sessionVariable.getUserLogInInfo());
    String doctorEmpId = logInInfo[1].toString();
    String companyNo = logInInfo[4].toString();
    String getLkpDataIdPrefix = (String) ActionContext.getContext().getSession().get(sessionVariable.getLkpPrefixDataId());

    System.out.println(lkpDataId);
    System.out.println(lkpDataIdcheckbox);
    String lkpDataIdArr[]=lkpDataId.split(",");
    String lkpDataIdcheckboxArr[]=lkpDataIdcheckbox.split(","); 
    System.out.println(lkpDataIdArr.length);
    System.out.println(lkpDataIdcheckboxArr.length);
    System.out.println("lkpDataIdPrefixpp"+getLkpDataIdPrefix);
    System.out.println("gropuId"+gropuId);


    patientProgressNoteSql.savebuindEligibilityData(gropuId, getLkpDataIdPrefix ,lkpDataId, lkpDataIdcheckbox, companyNo , doctorEmpId, lkpName);
    return "buindEligibilityData";
}

SQL代码:

public Long savebuindEligibilityData(String LKPGRP_ID, String LKPDATA_ID_PREFIX, String LKPDATA_ID, String CHACK_STATUS, String COMPANY_NO, String CREATED_BY, String lkpName) {

    Long rowInserted = (long) 0;

    boolean fg = true;
    connection = dbConnection.connectDB();

    if (connection == null) {
        fg = false;
    }
    if (fg) {
        try {
            st = connection.createStatement();
            String insertQuery = "";
            String insertQuery2 ="";    
            Long PK_NOa = generatedSequenceNumber("SEQ_SA_PREFIX_SETUP", COMPANY_NO);

            for (int i = 0; i < CHACK_STATUS.length(); i++) {

                String lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",");
                String LKPGRP_IDArr[] = LKPGRP_ID.split(",");
                String LKPDATA_ID_PREFIXArr[] = LKPDATA_ID_PREFIX.split(",");
                String LKPDATA_IDArr[] = LKPDATA_ID.split(",");
                //String lkpNameArr[] = lkpName.split(",");

                if(lkpDataIdcheckboxArr[i].trim().equals("1")){

                    String PK_NO = generatedSequence("", "SEQ_HPMSINTAKEOUTPUT",
                            "D", "1", "Y");
                    insertQuery = "INSERT INTO SA_PREFIX_SETUP (LKPGRP_ID, COMPANY_NO, PREFIX_SETUP_ID,  CREATED_BY, LKPDATA_ID_PREFIX, LKPDATA_ID, CREATED_DT, CHACK_STATUS "
                            + ")values('"
                            + LKPGRP_IDArr[i]
                            + "','"
                            + COMPANY_NO
                            + "',"
                            + PK_NOa
                            + ",'"
                            + CREATED_BY
                            + ",'"
                            + LKPDATA_ID_PREFIXArr[i]
                            + ",'"
                            + LKPDATA_IDArr[i]

                            + "',sysdate,'"

                            + lkpDataIdcheckboxArr[i] + "')";       

                }       
            }

            System.out.println(insertQuery);                
            st.executeUpdate(insertQuery);

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                st.close();
                connection.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }

    return rowInserted;
}

循环从0迭代到CHACK_STATUS的长度(这是一个字符串)

 for (int i = 0; i < CHACK_STATUS.length(); i++)

然后在循环内部,这个字符串被拆分成 table 个元素

String lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",");

然后代码从这里 table 检索值:

if(lkpDataIdcheckboxArr[i].trim().equals("1")){

还有这里:

  + lkpDataIdcheckboxArr[i] + "')";     

现在假设 CHACK_STATUS = "1,0,1"

这个变量的长度是:CHACK_STATUS.length() = 5.

如果拆分此字符串:lkpDataIdcheckboxArr[] = CHACK_STATUS.split(","),您将得到一个包含 3 个元素的 table:lkpDataIdcheckboxArr[] = {"1","0","1"}

现在循环正在迭代 ( i < 5) : 0 ... 1 ... 2 .... 3

BANG - if(lkpDataIdcheckboxArr[i].trim().equa...
for i=3 抛出 IndexOutOfBoundException 因为 lkpDataIdcheckboxArr 只有 3 个元素 [0]、[1] 和 [2],元素 [3] 不存在!