Revision 43093 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/FetchFeatureProviderByReferenceOperation.java

View differences:

FetchFeatureProviderByReferenceOperation.java
2 2
package org.gvsig.fmap.dal.store.jdbc2.spi.operations;
3 3

  
4 4
import java.sql.Connection;
5
import java.sql.PreparedStatement;
5 6
import java.sql.ResultSet;
6 7
import java.sql.SQLException;
7
import java.sql.Statement;
8 8
import org.gvsig.fmap.dal.exception.DataException;
9 9
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
10 10
import org.gvsig.fmap.dal.feature.FeatureType;
......
14 14
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
15 15
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
16 16
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
17
import org.gvsig.fmap.geom.DataTypes;
17 18

  
18 19

  
19 20
public class FetchFeatureProviderByReferenceOperation extends AbstractConnectionOperation {
......
68 69
        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
69 70
        
70 71
        for (FeatureAttributeDescriptor attr : featureType) {
71
            sqlbuilder.select().column().name(attr.getName());
72
            if( attr.getType()==DataTypes.GEOMETRY ) {
73
                sqlbuilder.select().column().name(attr.getName()).as_geometry();
74
            } else {
75
                sqlbuilder.select().column().name(attr.getName());
76
            }
72 77
        }
73 78
        sqlbuilder.select().from().table().database(database).schema(schema).name(table);
74 79
        for (String name : primaryKeys )  {
......
84 89
                sqlbuilder.select().where().and(
85 90
                    sqlbuilder.eq(
86 91
                        sqlbuilder.column(name), 
87
                        sqlbuilder.parameter(name).as_variable()
92
                        sqlbuilder.parameter(name).value(value)
88 93
                    )
89 94
                );              
90 95
            }
91 96
        }
92 97
        sqlbuilder.select().limit(1);
93
        
98

  
94 99
        String sql = sqlbuilder.select().toString();
95 100

  
96
        Statement st = null;
101
        PreparedStatement st = null;
97 102
        ResultSet rs = null;
98 103
        try {
99
            st = conn.createStatement();
104
            st = conn.prepareStatement(sql);
105
            sqlbuilder.setParameters(st);
100 106
            rs = JDBCUtils.executeQuery(st, sql);
101 107
            if (!rs.next()) {
102 108
                return null;

Also available in: Unified diff