简体   繁体   English

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

[英]How to insert serialize data in Oracle using java

I have some list value get from database and saved this value with checked and unchecked (1 or 0) 我有一些列表值从数据库中获取,并已选中和未选中(1或0)保存此值

My HTML markup is: 我的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: 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 code: 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 code: 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;
}

The loop iterates from 0 to a length of CHACK_STATUS (which is a string) 循环从0迭代到CHACK_STATUS的长度(这是一个字符串)

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

then inside the loop this tring is splitted into a table of elements 然后在循环中,将这一过程拆分为元素表

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

and then the code is retrieving value from this table here: 然后代码从这里的表中检索值:

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

and also here: 还有这里:

  + lkpDataIdcheckboxArr[i] + "')";     

Now imagine that CHACK_STATUS = "1,0,1" 现在假设CHACK_STATUS =“ 1,0,1”

A length of this variable is: CHACK_STATUS.length() = 5. 该变量的长度为:CHACK_STATUS.length()= 5。

If you split this string: lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",") you will get a table with 3 elements: lkpDataIdcheckboxArr[] = {"1","0","1"} 如果您拆分此字符串: lkpDataIdcheckboxArr[] = CHACK_STATUS.split(",")您将获得一个包含3个元素的表: lkpDataIdcheckboxArr[] = {"1","0","1"}

Now the loop is iterating ( i < 5) : 0 ... 1 ... 2 .... 3 现在循环在迭代(i <5):0 ... 1 ... 2 .... 3

and BANG - if(lkpDataIdcheckboxArr[i].trim().equa... BANG - if(lkpDataIdcheckboxArr[i].trim().equa...
for i=3 throws IndexOutOfBoundException because lkpDataIdcheckboxArr has only 3 elements [0], [1] and [2], the element [3] does not exists ! 因为lkpDataIdcheckboxArr只有3个元素[0],[1]和[2],所以i = 3会引发IndexOutOfBoundException ,元素[3]不存在!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM