2014-09-18 4 views
-5

я хочу, чтобы умножить 2 массивы и показать таблицы, но этот код не работает, вот этот код, пожалуйста, помогите мнекак умножать 2 массивов и показать таблицы

public void hitung() 

    int hasil = 0; 
    long nilai2 ; 
    int quan = 0 ; 
    int quans = 0; 

    try { 

      String sql = ("SELECT tbl_masakan.nama_masakan, banyak, tbl_masakan.harga_masakan FROM tbl_masakan, tbl_det_pesanan WHERE id_det_pesanan = '"+ id +"' and tbl_det_pesanan.id_masakan = tbl_masakan.id_masakan "); 
      ResultSet rsuser= cn.stt.executeQuery(sql); 
      rsmetadata = rsuser.getMetaData(); 
      while (rsuser.next()) { 

       int size = 0; 

        if (rsuser != null) 
        { 
         rsuser.beforeFirst(); 
         rsuser.last(); 
         size = rsuser.getRow(); 
        } 

        String str = rsuser.getString(2); 
        quan = Integer.parseInt(str); 
        String strs = rsuser.getString(3); 
        quans = Integer.parseInt(strs); 
        hasil = hasil + (quan*quans); 
      } 

     } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e.toString()); 
     } 

    txt1.setText(String.valueOf(hasil)); 
} 
+0

Вы перемещаете указатель результата до конца на самой первой итерации. Есть ли причина? –

+0

нам нужно сообщение об ошибке, чтобы помочь вам .... поэтому, обновите свой вопрос для добавления сообщения об исключении .. – Vito

+0

Что не работает? У вас есть трассировка стека? Вы предпринимали какие-либо усилия, чтобы отлаживать себя? –

ответ

0

Там некоторые незначительные проблемы с вашим кодом.

  1. Существуют переменные, определенные, но никогда не используемые, как в случае с размером и rsmetadata (который не указан в отправленном вами коде).
  2. Нет необходимости извлекать столбцы из базы данных в виде строк, а затем выполнять преобразование с помощью Integer.parseInt(). Вы можете получить их непосредственно как Целые, используя rsuser.getInt (columnIndex).
  3. Документация для метода executeQuery (String sql) класса Statement говорит, что он возвращает «объект ResultSet, который содержит данные, полученные данным запросом, никогда не имеет значения null», поэтому проверка нулевого значения не требуется.

Я полагаю, что причиной вашей проблемы (хотя на самом деле вы не сказали, что является результатом вашего кода) является вычисление размера ResultSet. Обратите внимание, что курсор указывает на последнюю позицию (rsuser.last()), поэтому ваш while (rsuser.next()) {...} цикл должен запускаться только один раз. Если вам действительно нужно вычислить размер по какой-либо причине, вы должны сделать это до цикла while() и не забудьте снова вызвать rsuser.beforeFirst(), чтобы курсор указывал на начало набора результатов перед входом в цикл. В этом случае ваш код должен выглядеть следующим образом:

String sql = ...; 
    ResultSet rsuser= cn.stt.executeQuery(sql); 
    // calculate size 
    int size = 0; 
    if (rsuser.last()) { 
     size = rsuser.getRow(); 
     rsuser.beforeFirst(); 
    } 

    while (rsuser.next()) { 
     quan = rsuser.getInt(2); 
     quans = rsuser.getInt(3); 
     hasil = hasil + (quan*quans); 
    } 

Наконец, заметим, что этот метод расчета размера ResultSet не без проблем, все из которых четко указано в этой дискуссии: How do I get the size of a java.sql.ResultSet?

Смежные вопросы