在一行中插入多个值

时间:2010-11-10 11:20:19

标签: java jdbc

我需要将解析后的XML文件中的数据插入到mySQL表中。问题是我有很少的属性,不知道如何将它们插入一行。我尝试使用updateString但它只写了最后一个属性。

以下是XML文件中的示例:

<Tr rn=\"999999999999999\" vr=\"T\" sSpre=\"S\" reg=\"P\" dSpre=\"2010-09-30\" dOdprt=\"2000-01-01\" iban=\"SI56\" eno=\"R\" vir=\"R\" maticnaPps=\"00000000\"><Imetnik davcna=\"0000000\" matSub=\"0000000\" drz=\"705\"><PopolnoIme>xxx</PopolnoIme><KratkoIme>xxx</KratkoIme><Naslov sifTipNaslova=\"01\" sifObcina=\"039\" sifPosta=\"1303\" sifUlica=\"0000\" sifNaselje=\"059\" stHisna=\"027\" sifHsmid=\"11694551\"><Obcina>xxx</Obcina><Posta>xxx</Posta><Ulica>xxx</Ulica><Naselje>xxx</Naselje></Naslov></Imetnik></Tr>

这是我用于在mySQL表中编写的java程序的划痕。

if (myWorkLine.substring(0,4).equals(Tr)) {

    uprs.afterLast();
    uprs.moveToInsertRow();

if (myWorkLine.contains(Tr)) {
    myWorkLine = myWorkLine.substring(myWorkLine.indexOf(Tr)+4);
    while (!myWorkLine.substring(0,1).equals("<")) {
        myTag = myWorkLine.substring(0,myWorkLine.indexOf("="));
        myWorkLine = myWorkLine.substring(myWorkLine.indexOf("=")+2);
        myValue = myWorkLine.substring(0,myWorkLine.indexOf("\""));
        myWorkLine = myWorkLine.substring(myWorkLine.indexOf("\"")+2);
        uprs.updateString("Tr",myTag + " " + myValue);
        if (myWorkLine.substring(0,myWorkLine.indexOf("\">")).indexOf(">") > 0)
            break;
    }
}

所以再一次,我需要在MySQL表格列Tr中包含属性rn值,vr值,sSpre值,...

提前致谢。

P.S。:请不要问我为什么要通过这种方法解析XML文件,我必须这样做。 :)

1 个答案:

答案 0 :(得分:1)

您的代码将使用标记+“”+值的串联重复替换“Tr”列,因此它只会是最后一个进入的。您不希望不同的标记位于不同的列中?或者你可能需要继续连接,最后只调用updateString。

您可以为给定的XML发布所需的表格行吗?这应该有助于确定你想要实现的目标。

例如,如果您只想附加它们:

StringBuffer tr = new StringBuffer();
while (!myWorkLine.substring(0,1).equals("<")) {
    myTag = myWorkLine.substring(0,myWorkLine.indexOf("="));
    myWorkLine = myWorkLine.substring(myWorkLine.indexOf("=")+2);
    myValue = myWorkLine.substring(0,myWorkLine.indexOf("\""));
    myWorkLine = myWorkLine.substring(myWorkLine.indexOf("\"")+2);
    tr.append(myTag + " " + myValue).append(",");
    if (myWorkLine.substring(0,myWorkLine.indexOf("\">")).indexOf(">") > 0)
        break;
}
if (tr.length() > 0) {
    tr.deleteCharAt(tr.length()-1);  // get rid of last comma
}
uprs.updateString("Tr",tr.toString());