2015-08-12 1 views
0

Я работаю над проектом в itext, и когда я пытаюсь получить данные из базы данных и заполнить их в уже существующий pdf, используя itext, я получаю это ошибка «позиционируется обновление не поддерживается.Получение исключения «позиционированное обновление не поддерживается» при чтении данных из функции getCursorName

package itext.sample; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.pdf.AcroFields; 
import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.PdfStamper; 
import com.itextpdf.text.pdf.PdfWriter; 

/** 
* @author prithvi 
* 
*/ 
public class FirstPdf { 

    private static final String Result = "D:/Eclipse Java/image.pdf"; 

    public static void main(String[] args) throws SQLException,IOException,DocumentException { 
     try { 

      Class.forName("com.mysql.jdbc.Driver"); 

     } catch (ClassNotFoundException e) { 

      System.out.println("Where is your MySQL JDBC Driver?"); 
      e.printStackTrace(); 
      return; 

     } 
     System.out.println("MySQL JDBC Driver Registered!"); 
     Connection connection = null; 
     try { 
      connection = DriverManager 
        .getConnection("jdbc:mysql://69.167.139.172/bluedb", 
          "color", "prithvi"); 

     } catch (SQLException e) { 
      System.out.println("Connection Failed! Check output console"); 
      e.printStackTrace(); 
      return; 
     } 

     if (connection != null) { 
      System.out.println("You made it, take control your database now!"); 
     } else { 
      System.out.println("Failed to make connection!"); 
     } 
    try { 
      Statement stm = null; 
      stm = connection.createStatement();//creating database query 
      ResultSet rs = null; 
      rs = stm.executeQuery("SELECT * FROM Sec1"); 
      PdfReader reader = new PdfReader("D:/Eclipse Java/HiltonForms2014_r.pdf"); 
      PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(Result)); 
      AcroFields form = stamper.getAcroFields(); 
      form.setField("LASTNAME", rs.getCursorName()); 
      stamper.setFormFlattening(true); 
      stamper.close(); 
      reader.close(); 

      connection.close(); 

    } 

       catch (DocumentException | SQLException e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
        } 
       } 
} 
+0

Я обновил ваш вопрос, потому что (1) ваше утверждение, что вам нужно 'PdfWriter', не имеет смысла, (2.) код, который прокомментирован, не имеет значения, и (3.) это вопрос SQL , Ваша проблема не имеет ничего общего с iText или PDF! Это чистый вопрос JDBC. –

ответ

1

Ваша база данных не поддерживает getCursorName() поэтому выкинули ошибка доступа к базе данных.

Глядя на ваш код, это трудно понять, почему вам нужно, что Вы получаете все поля таблицы с именем Sec1, и вы хотите получить String с именем.

Предположим, что поле с таким именем назван lastname, Theb вы можете получить значение этого поля, как это:

String lastname = null; 
if (rs != null) 
    lastname = rs.getString("lastname"); 

Теперь вы можете использовать lastname для заполнения поля:

form.setField("LASTNAME", lastname); 

Очевидно, что только "lastname" - это то, что поле вызывается в вашей базе данных. Этот пример не будет работать, если поле имеет имя "last_name", "lname" или любое другое имя.

+0

Спасибо. Это был вопрос базы данных, я должен был осознать это плохо. Прости –