Вставка нескольких значений в одну строку - PullRequest
0 голосов
/ 10 ноября 2010

Мне нужно вставить данные из моего разобранного 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>

Это скриншот из моей Java-программы, которую я использовал для записи в таблицу MySQL.

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 Ответ

1 голос
/ 10 ноября 2010

Ваш код будет многократно заменять столбец "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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...