« Return to Thread: getElement from database

getElement from database

by gaghi :: Rate this Message:

Reply to Author | View in Thread

hi guys, i'm writing a plugin for udig(based on eclipse). I have to show a table which rows are the result of a DB selection. I'm able to get the rows from the database, but I think I'm doing something wrong in getting them back to the table.
Following a skeleton of my code.
CollectionItem defines the type of data.
getElement is a Content Provider method.
I don't really know how move on.
I have problems with LabelProvider which doesn't allow me to show the column name because of a casting problem from CollectionItem, but i have a method like this: String[] colName= coll_It.getColumnName(); this method returns a string array. Trying instead to print a string array {from 1 to 10} the label are printed all in the first column filling 10 rows.
i hope you could help.

public class CollectionItem {
        private ArrayList<Object[]> items= new ArrayList<Object[]>();
        private String collection;
        Object dbRow[]=null;
        public CollectionItem(String collection){
                this.collection=collection;
                extractData();
        }
       
        public ArrayList<Object[]> getItem(){
                return items;
        }
        public void extractData(){
                String query = "SELECT I.* FROM  Items as I  Inner Join CollectionItems AS CI  ON I.ItemID = CI.ItemID where CI.CollectionID like \""+collection+"\"";
                System.out.println(query);
                try {
                        DbAction db= new DbAction("Collezione");
                    Statement s = db.openConnection();
                        ResultSet rs = s.executeQuery(query);
                        ResultSetMetaData rsmd = rs.getMetaData();
                        dbRow= new Object[rsmd.getColumnCount()];
                        columnName= new Object[rsmd.getColumnCount()];
                        boolean done=false;
                        while( rs.next() )
                        {
                                for(int i =1; i <= rsmd.getColumnCount(); i++){
                                        dbRow[i-1]=rs.getString(i);
                                       
                                }
                               
                                items.add(dbRow);//fill vector with array containing rows
                               
                        }
                       
                        db.closeConnection();
                }
                 catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

        }

Inside TableContentProvider:

public Object[] getElements(Object inputElement) {
               
                CollectionItem ci = new CollectionItem(inputElement.toString());
                return ci.getItem().toArray().length;
               
        }

Thanks,
Gabriele

 « Return to Thread: getElement from database