вставить несколько выбранных значений в таблицу (оракул) - PullRequest
0 голосов
/ 24 февраля 2012

это мой index.jsp страница

<form action="addCountry.jsp" method="get">
    <select id="countries" class="multiselect" multiple="multiple" name="countries">
      <option value="AFG">Afghanistan</option>
      <option value="ALB">Albania</option>
      <option value="DZA">Algeria</option>
      <option value="AND">Andorra</option>
      <option value="ARG">Argentina</option>
      <option value="ARM">Armenia</option>
      <option value="ABW">Aruba</option>
      <option value="AUS">Australia</option>
      <option value="AUT" selected="selected">Austria</option>
      <option value="AZE">Azerbaijan</option>
      <option value="BGD">Bangladesh</option>
      <option value="BLR">Belarus</option>
      <option value="BEL">Belgium</option>
      <option value="BIH">Bosnia and Herzegovina</option>
      <option value="BRA">Brazil</option>
      <option value="BRN">Brunei</option>
      <option value="BGR">Bulgaria</option>
      <option value="CAN">Canada</option>
      <option value="CHN">China</option>
      <option value="COL">Colombia</option>
      <option value="HRV">Croatia</option>
      <option value="CYP">Cyprus</option>
      <option value="CZE">Czech Republic</option>
</select>
<br/>
      <input type="submit" value="Submit Form"/>
    </form>

это будет мой addCountry.jsp код страницы

<% 
try{
String[] country=request.getParameterValues("countries");
int count=0;
while(country[count]!=null)
out.println(country[count++]);
}catch(Exception ex)
{
//out.print(ex);
}
%>

Но я очень запутан, чтобы вставить несколько значений в таблицу одновременно. Должен ли я использовать цикл для множественной вставки ?? Любая помощь приветствуется! Заранее спасибо !!

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Взгляните на javadoc для java.sql.Statement, в частности addBatch(String sql) и executeBatch() методов, чтобы поставить в очередь операторы и выполнить их позже вместе.

0 голосов
/ 24 февраля 2012
addCountries(request.getParameterValues("countries"));    

Следующий метод запускает транзакцию, выполняет запросы по одному, фиксирует, если все они были успешными, и откатывается, если была какая-либо ошибка.

private void addCountries(String[] countries)
{
    Connection cn = <YOUR_CONNECTION_HERE>;

    try
    {
        // Require Explicit Commit
        cn.setAutoCommit(false);

        // Construct Query
        String  sql = "insert into countries " 
                + "  (country_code) " 
                + "values " 
                + "  (?) ";

        // For each country
        for(String country:countries)
        {
            PreparedStatement ps = cn.prepareStatement(sql);
            ps.setString(1, country);
            ps.executeUpdate();
            ps.close();
        }

        // Explicitly Commit - This point reached with no Exceptions.
        cn.commit();
    }
    catch (Exception e)
    {
        // Explicitly Rollback - There were errors along the way
        cn.rollback();
        e.printStackTrace();
    }
    finally
    {
        if(cn != null)
        {
            cn.close();
        }
    }
}

Пользоваться Exception нехорошо, поэтому я рекомендую изменить эту часть, чтобы перехватывать любые типы исключений, возможно, SQLException, среди прочих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...