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
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