Сериализация ArrayList с JDBC и Oracle - PullRequest
1 голос
/ 04 января 2012

Я попытался сериализовать ArrayList для записи его в базу данных ORACLE.

    ArrayList<Long> lst2 = new ArrayList<Long>();
    lst2.add((long) 5);
    lst2.add((long) 5);
    lst2.add((long) 7);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     try {
        new ObjectOutputStream( baos ).writeObject( lst2 );
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Схема SQL выглядит следующим образом:

 create table T_2471785b1bf2475c9f292f73eeb 
 (
 "CLEARTXTID" NUMBER(38,0),
 "user" VARCHAR2(255),
 "tag" VARCHAR2(255),
 "object" NUMBER(19, 0),
 "objectList" BLOB 
, CONSTRAINT c_f2858bfc2a824579a630a934aea PRIMARY KEY ( "CLEARTXTID"  ) 
)

Для вставки я использовал следующий код Java:

    try
   {
   Class.forName("org.postgresql.Driver");

   Connection conn = DriverManager.getConnection("jdbc:...:testdb", 
       "user", "password");
   Statement statement = conn.createStatement();

    int result = statement.executeUpdate("INSERT INTO T_2471785b1bf2475c9f292f73eeb  VALUES(5, 'Trude', 'Trudscherl',       42, !!serializedArraylist!!);");

   System.out.println("Eingefügte Datensätze: " + result);

   statement.close();
   conn.close();
   }
   catch(ClassNotFoundException e)
   {
   // ...
   }
   catch(SQLException e)
   {
   // ...
   }

Я не знаю, как поставить мой сериализованный Arraylist на serializedArraylist.

Ответы [ 2 ]

1 голос
/ 04 января 2012
String query = "INSERT INTO T_2471785b1bf2475c9f292f73eeb VALUES(5, 'Trude', 'Trudscherl', 42, ";
for (int i = 0; i < lst2.size();) {
    query += lst2.get(i);
    i++;
    if(i<lst2.size()){
        query += ", ";
    }
}
query += ")";
int result = statement.executeUpdate(query);
System.out.println("Eingefügte Datensätze: " + result);

Вы можете легко обновить, используя вышеуказанный код.

1 голос
/ 04 января 2012

Вы должны использовать PreparedStatement и устанавливать каждое поле параметрически.Однако использование BLOB-файлов может быть затруднительным, поэтому, возможно, VARBINARY или тому подобное будет лучше (при условии, что ваши данные относительно малы, как здесь, кажется)

...