Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一行中插入多个值_Java_Jdbc - Fatal编程技术网

Java 在一行中插入多个值

Java 在一行中插入多个值,java,jdbc,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=\"000000

我需要将解析后的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>
xxxxxxxxxxxx
这是我用来在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;
    }
}
if(myWorkLine.substring(0,4).equals(Tr)){
uprs.afterLast();
uprs.moveToInsertRow();
if(myWorkLine.contains(Tr)){
myWorkLine=myWorkLine.substring(myWorkLine.indexOf(Tr)+4);
而(!myWorkLine.substring(0,1).equals(“0”)
打破
}
}
所以再一次,我需要MySQL表中的列
Tr
包含属性
rn
value,
vr
value,
sSpre
value

提前谢谢


注意:请不要问我为什么要用这种方法解析XML文件,我必须这样做。

您的代码将用标记+的串联重复替换“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());
StringBuffer tr=new-StringBuffer();
而(!myWorkLine.substring(0,1).equals(“0”)
打破
}
如果(tr.length()>0){
tr.deleteCharAt(tr.length()-1);//去掉最后一个逗号
}
uprs.updateString(“Tr”,Tr.toString());

我还是要问你为什么要这样解析XML。Java自带了内置的libs来解析XML。至少可以说,通过字符串来解析XML是容易出错的。是的,我知道它自带了内置的解析器。我的老板命令我这样做。是的,这正是我想要的。我现在唯一想不出的是如何不包含prevXML文件中的ious行。现在它附加上一行+当前行的值。好吧,当检测到新行时,只需清除StringBuffer(或创建一个新的StringBuffer)。从代码片段看,不清楚何时会出现这种情况。我希望while循环是在一行的开头输入的(使用新创建的StringBuffer)-根据您的说法,情况并非如此。是的,您是对的。我当时发现需要清除StringBuffer。我这样做是因为每次while循环开始时它都会清除。谢谢您的帮助!