Revision 5700

View differences:

trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/XTypes.java
155 155
	public static void updateValue(ResultSet rs, int fieldId_ceroBased, Value val) throws SQLException {
156 156
		if (val instanceof NullValue)
157 157
			return;
158
		byte[] data;
158
		// byte[] data;
159 159
		ResultSetMetaData metaData = rs.getMetaData();
160 160
		int fieldId = fieldId_ceroBased + 1;
161
		// System.out.println("EScritrua: " + metaData.isDefinitelyWritable(1));
161 162
		switch (val.getSQLType())
162 163
		{
163 164
		case Types.VARCHAR:
trunk/libraries/libGDBMS/build.xml
18 18
		<tstamp />	
19 19
	</target>
20 20

  
21
	<target name="generar-todos" depends="init, csvstring, odbc, mysql, postgresql, hsqldb, create-jar" description="Genera los jars de todos los drivers ">
21
	<target name="generar-todos" depends="init, csvstring, odbc, mysql, postgresql, hsqldb, oracle, create-jar" description="Genera los jars de todos los drivers ">
22 22
	</target>
23 23

  
24 24
	<target name="csv" description="Genera el jar de csv">
......
78 78
		<jar jarfile="${drivers-dir}/hsqldb/hsqldb.jar" basedir="${classes-dir}" includes="com/hardcode/gdbms/driver/hsqldb/**" />
79 79
	</target>
80 80

  
81
	<target name="oracle" description="Genera el jar de oracle">
82
		<delete dir="${drivers-dir}/oracle" />
83
		<mkdir dir="${drivers-dir}/oracle" />
84
		<jar jarfile="${drivers-dir}/oracle/oracle.jar" basedir="${classes-dir}" includes="com/hardcode/gdbms/driver/oracle/**" />
85
	</target>
86

  
81 87
	<target name="hsqldb transactional" description="Genera el jar de hsqldb transaccional">
82 88
		<delete dir="${drivers-dir}/hsqldbTransactional" />
83 89
		<mkdir dir="${drivers-dir}/hsqldbTransactional" />
trunk/libraries/libGDBMS/.classpath
14 14
	<classpathentry kind="lib" path="/_fwAndami/lib/crimson.jar"/>
15 15
	<classpathentry kind="lib" path="/_fwAndami/lib/iver-utiles.jar"/>
16 16
	<classpathentry kind="lib" path="/_fwAndami/lib/log4j-1.2.8.jar"/>
17
	<classpathentry kind="output" path="bin"/>
17
	<classpathentry kind="lib" path="/libFMap/lib/ojdbc14.jar"/>
18
	<classpathentry kind="output" path="target/classes"/>
18 19
</classpath>
trunk/libraries/libGDBMS/src/main/java/com/hardcode/gdbms/engine/data/driver/AbstractJDBCDriver.java
42 42

  
43 43
import java.sql.Connection;
44 44
import java.sql.Date;
45
import java.sql.DriverManager;
46 45
import java.sql.ResultSet;
47 46
import java.sql.SQLException;
48 47
import java.sql.Statement;
......
60 59
import com.iver.cit.gvsig.fmap.edition.IWriter;
61 60
import com.iver.cit.gvsig.fmap.edition.writers.JdbcWriter;
62 61

  
63
public abstract class AbstractJDBCDriver implements AlphanumericDBDriver, IWriteable {
62
public abstract class AbstractJDBCDriver implements AlphanumericDBDriver,
63
		IWriteable {
64 64

  
65
    protected JDBCSupport jdbcSupport;
66
    private JdbcWriter jdbcWriter = new JdbcWriter();
67
    private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
68
    private static DateFormat timeFormat = new SimpleDateFormat(
69
            "yyyy-MM-dd HH:mm:ss");
65
	protected JDBCSupport jdbcSupport;
70 66

  
71
    
72
    private ValueWriter vWriter = ValueWriter.internalValueWriter;
67
	protected JdbcWriter jdbcWriter = new JdbcWriter();
73 68

  
69
	private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
74 70

  
75
    /**
76
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#executeSQL(java.sql.Connection,
77
     *      java.lang.String)
78
     */
79
    public void open(Connection con, String sql) throws SQLException {
80
        jdbcSupport = JDBCSupport.newJDBCSupport(con, sql);
81
        jdbcWriter.setCreateTable(false);
82
        jdbcWriter.setWriteAll(false);
83
        Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
84
                ResultSet.CONCUR_UPDATABLE);
85
        ResultSet res = st.executeQuery(sql);
71
	private static DateFormat timeFormat = new SimpleDateFormat(
72
			"yyyy-MM-dd HH:mm:ss");
86 73

  
87
        jdbcWriter.initialize(con, res);
88
    }
74
	private ValueWriter vWriter = ValueWriter.internalValueWriter;
89 75

  
90
    /**
91
     * DOCUMENT ME!
92
     *
93
     * @return DOCUMENT ME!
94
     *
95
     * @throws DriverException DOCUMENT ME!
96
     */
97
    public int getFieldCount() throws DriverException {
98
        return jdbcSupport.getFieldCount();
99
    }
76
	/**
77
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#executeSQL(java.sql.Connection,
78
	 *      java.lang.String)
79
	 */
80
	public void open(Connection con, String sql) throws SQLException {
81
		jdbcSupport = JDBCSupport.newJDBCSupport(con, sql);
82
		jdbcWriter.setCreateTable(false);
83
		jdbcWriter.setWriteAll(false);
84
		Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
85
				ResultSet.CONCUR_UPDATABLE);
86
		ResultSet res = st.executeQuery(sql);
87
		if (res.getConcurrency() != ResultSet.CONCUR_UPDATABLE) {
88
			System.err.println("Error: No se puede editar la tabla " + sql);
89
			jdbcWriter = null;
90
		} else
91
			jdbcWriter.initialize(con, res);
92
	}
100 93

  
101
    /**
102
     * DOCUMENT ME!
103
     *
104
     * @param fieldId DOCUMENT ME!
105
     *
106
     * @return DOCUMENT ME!
107
     *
108
     * @throws DriverException DOCUMENT ME!
109
     */
110
    public String getFieldName(int fieldId) throws DriverException {
111
        return jdbcSupport.getFieldName(fieldId);
112
    }
94
	/**
95
	 * DOCUMENT ME!
96
	 * 
97
	 * @return DOCUMENT ME!
98
	 * 
99
	 * @throws DriverException
100
	 *             DOCUMENT ME!
101
	 */
102
	public int getFieldCount() throws DriverException {
103
		return jdbcSupport.getFieldCount();
104
	}
113 105

  
114
    /**
115
     * DOCUMENT ME!
116
     *
117
     * @param i DOCUMENT ME!
118
     *
119
     * @return DOCUMENT ME!
120
     *
121
     * @throws DriverException DOCUMENT ME!
122
     */
123
    public int getFieldType(int i) throws DriverException {
124
        return jdbcSupport.getFieldType(i);
125
    }
106
	/**
107
	 * DOCUMENT ME!
108
	 * 
109
	 * @param fieldId
110
	 *            DOCUMENT ME!
111
	 * 
112
	 * @return DOCUMENT ME!
113
	 * 
114
	 * @throws DriverException
115
	 *             DOCUMENT ME!
116
	 */
117
	public String getFieldName(int fieldId) throws DriverException {
118
		return jdbcSupport.getFieldName(fieldId);
119
	}
126 120

  
127
    /**
128
     * DOCUMENT ME!
129
     *
130
     * @param rowIndex DOCUMENT ME!
131
     * @param fieldId DOCUMENT ME!
132
     *
133
     * @return DOCUMENT ME!
134
     *
135
     * @throws DriverException DOCUMENT ME!
136
     */
137
    public Value getFieldValue(long rowIndex, int fieldId)
138
        throws DriverException {
139
        return jdbcSupport.getFieldValue(rowIndex, fieldId);
140
    }
121
	/**
122
	 * DOCUMENT ME!
123
	 * 
124
	 * @param i
125
	 *            DOCUMENT ME!
126
	 * 
127
	 * @return DOCUMENT ME!
128
	 * 
129
	 * @throws DriverException
130
	 *             DOCUMENT ME!
131
	 */
132
	public int getFieldType(int i) throws DriverException {
133
		return jdbcSupport.getFieldType(i);
134
	}
141 135

  
142
    /**
143
     * DOCUMENT ME!
144
     *
145
     * @return DOCUMENT ME!
146
     *
147
     * @throws DriverException DOCUMENT ME!
148
     */
149
    public long getRowCount() throws DriverException {
150
        return jdbcSupport.getRowCount();
151
    }
136
	/**
137
	 * DOCUMENT ME!
138
	 * 
139
	 * @param rowIndex
140
	 *            DOCUMENT ME!
141
	 * @param fieldId
142
	 *            DOCUMENT ME!
143
	 * 
144
	 * @return DOCUMENT ME!
145
	 * 
146
	 * @throws DriverException
147
	 *             DOCUMENT ME!
148
	 */
149
	public Value getFieldValue(long rowIndex, int fieldId)
150
			throws DriverException {
151
		return jdbcSupport.getFieldValue(rowIndex, fieldId);
152
	}
152 153

  
153
    /**
154
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#close()
155
     */
156
    public void close() throws SQLException {
157
        jdbcSupport.close();
158
        jdbcWriter.close();
159
    }
154
	/**
155
	 * DOCUMENT ME!
156
	 * 
157
	 * @return DOCUMENT ME!
158
	 * 
159
	 * @throws DriverException
160
	 *             DOCUMENT ME!
161
	 */
162
	public long getRowCount() throws DriverException {
163
		return jdbcSupport.getRowCount();
164
	}
160 165

  
161
    /**
162
     * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#getDriverProperties()
163
     */
164
    public HashMap getDriverProperties() {
165
        return null;
166
    }
166
	/**
167
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#close()
168
	 */
169
	public void close() throws SQLException {
170
		jdbcSupport.close();
171
		jdbcWriter.close();
172
	}
167 173

  
168
    /**
169
     * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#setDataSourceFactory(com.hardcode.gdbms.engine.data.DataSourceFactory)
170
     */
171
    public void setDataSourceFactory(DataSourceFactory dsf) {
172
    }
174
	/**
175
	 * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#getDriverProperties()
176
	 */
177
	public HashMap getDriverProperties() {
178
		return null;
179
	}
173 180

  
174
    /**
175
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#execute(java.sql.Connection,
176
     *      java.lang.String, com.hardcode.gdbms.engine.data.HasProperties)
177
     */
178
    public void execute(Connection con, String sql) throws SQLException {
179
        JDBCSupport.execute(con, sql);
180
    }
181
	/**
182
	 * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#setDataSourceFactory(com.hardcode.gdbms.engine.data.DataSourceFactory)
183
	 */
184
	public void setDataSourceFactory(DataSourceFactory dsf) {
185
	}
181 186

  
182
    /**
183
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getInternalTableName(java.lang.String)
184
     */
185
    public String getInternalTableName(String tableName) {
186
        return tableName;
187
    }
187
	/**
188
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#execute(java.sql.Connection,
189
	 *      java.lang.String, com.hardcode.gdbms.engine.data.HasProperties)
190
	 */
191
	public void execute(Connection con, String sql) throws SQLException {
192
		JDBCSupport.execute(con, sql);
193
	}
188 194

  
189
    /**
190
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(long)
191
     */
192
    public String getStatementString(long i) {
193
        return vWriter.getStatementString(i);
194
    }
195
	/**
196
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getInternalTableName(java.lang.String)
197
	 */
198
	public String getInternalTableName(String tableName) {
199
		return tableName;
200
	}
195 201

  
196
    /**
197
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(int,
198
     *      int)
199
     */
200
    public String getStatementString(int i, int sqlType) {
201
        return vWriter.getStatementString(i, sqlType);
202
    }
202
	/**
203
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(long)
204
	 */
205
	public String getStatementString(long i) {
206
		return vWriter.getStatementString(i);
207
	}
203 208

  
204
    /**
205
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(double,
206
     *      int)
207
     */
208
    public String getStatementString(double d, int sqlType) {
209
        return vWriter.getStatementString(d, sqlType);
210
    }
209
	/**
210
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(int,
211
	 *      int)
212
	 */
213
	public String getStatementString(int i, int sqlType) {
214
		return vWriter.getStatementString(i, sqlType);
215
	}
211 216

  
212
    /**
213
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.lang.String,
214
     *      int)
215
     */
216
    public String getStatementString(String str, int sqlType) {
217
        return vWriter.getStatementString(str, sqlType);
218
    }
217
	/**
218
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(double,
219
	 *      int)
220
	 */
221
	public String getStatementString(double d, int sqlType) {
222
		return vWriter.getStatementString(d, sqlType);
223
	}
219 224

  
220
    /**
221
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Date)
222
     */
223
    public String getStatementString(Date d) {
224
        return dateFormat.format(d);
225
    }
225
	/**
226
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.lang.String,
227
	 *      int)
228
	 */
229
	public String getStatementString(String str, int sqlType) {
230
		return vWriter.getStatementString(str, sqlType);
231
	}
226 232

  
227
    /**
228
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Time)
229
     */
230
    public String getStatementString(Time t) {
231
        return timeFormat.format(t);
232
    }
233
	/**
234
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Date)
235
	 */
236
	public String getStatementString(Date d) {
237
		return dateFormat.format(d);
238
	}
233 239

  
234
    /**
235
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Timestamp)
236
     */
237
    public String getStatementString(Timestamp ts) {
238
        return timeFormat.format(ts);
239
    }
240
	/**
241
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Time)
242
	 */
243
	public String getStatementString(Time t) {
244
		return timeFormat.format(t);
245
	}
240 246

  
241
    /**
242
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(byte[])
243
     */
244
    public String getStatementString(byte[] binary) {
245
        return "x" + vWriter.getStatementString(binary);
246
    }
247
	/**
248
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Timestamp)
249
	 */
250
	public String getStatementString(Timestamp ts) {
251
		return timeFormat.format(ts);
252
	}
247 253

  
248
    /**
249
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(boolean)
250
     */
251
    public String getStatementString(boolean b) {
252
        return vWriter.getStatementString(b);
253
    }
254
	/**
255
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(byte[])
256
	 */
257
	public String getStatementString(byte[] binary) {
258
		return "x" + vWriter.getStatementString(binary);
259
	}
254 260

  
255
    /**
256
     * @see com.hardcode.gdbms.engine.values.ValueWriter#getNullStatementString()
257
     */
258
    public String getNullStatementString() {
259
        return "null";
260
    }
261
	/**
262
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(boolean)
263
	 */
264
	public String getStatementString(boolean b) {
265
		return vWriter.getStatementString(b);
266
	}
267

  
268
	/**
269
	 * @see com.hardcode.gdbms.engine.values.ValueWriter#getNullStatementString()
270
	 */
271
	public String getNullStatementString() {
272
		return "null";
273
	}
274

  
261 275
	public int getFieldWidth(int i) throws DriverException {
262 276
		return jdbcSupport.getFieldWidth(i);
263 277
	}
......
266 280
		return jdbcWriter;
267 281
	}
268 282
}
269

  
270

  
trunk/libraries/libGDBMS/src/main/java/com/hardcode/gdbms/driver/oracle/OracleDriver.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package com.hardcode.gdbms.driver.oracle;
42

  
43
import java.sql.Connection;
44
import java.sql.DriverManager;
45
import java.sql.ResultSet;
46
import java.sql.ResultSetMetaData;
47
import java.sql.SQLException;
48
import java.sql.Statement;
49

  
50
import com.hardcode.gdbms.engine.data.db.JDBCSupport;
51
import com.hardcode.gdbms.engine.data.driver.AbstractJDBCDriver;
52

  
53
public class OracleDriver extends AbstractJDBCDriver {
54

  
55
    private static Exception driverException;
56
    
57
    static {
58
        try {
59
            // Class.forName("com.mysql.jdbc.Driver").newInstance();
60
            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
61
            
62
        } catch (Exception ex) {
63
            driverException = ex;
64
        }
65
    }
66

  
67
    
68
    /**
69
     * DOCUMENT ME!
70
     *
71
     * @param host DOCUMENT ME!
72
     * @param port DOCUMENT ME!
73
     * @param dbName DOCUMENT ME!
74
     * @param user DOCUMENT ME!
75
     * @param password DOCUMENT ME!
76
     *
77
     * @return DOCUMENT ME!
78
     *
79
     * @throws SQLException
80
     * @throws RuntimeException DOCUMENT ME!
81
     *
82
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#connect(java.lang.String)
83
     */
84
    public Connection getConnection(String host, int port, String dbName,
85
        String user, String password) throws SQLException {
86
        if (driverException != null) {
87
            throw new RuntimeException(driverException);
88
        }
89

  
90
        // String connectionString = "jdbc:mysql://" + host;
91
        // String connString="jdbc:oracle:thin:@prodHost:1521:ORCL";
92
        String connectionString="jdbc:oracle:thin:@" + host;
93

  
94
        if (port != -1) {
95
            connectionString += (":" + port);
96
        }
97

  
98
        connectionString += (":" + dbName);
99

  
100
//        if (user != null) {
101
//            connectionString += ("?user=" + user + "&password=" + password);
102
//        }
103

  
104
        return DriverManager.getConnection(connectionString, user, password);
105
    }
106

  
107
    /**
108
     * @see com.hardcode.driverManager.Driver#getName()
109
     */
110
    public String getName() {
111
        return "oracle";
112
    }
113

  
114
	public void open(Connection con, String sql) throws SQLException {
115
        jdbcWriter.setCreateTable(false);
116
        jdbcWriter.setWriteAll(false);
117
        Statement st = con.createStatement();
118
        ResultSet rs = st.executeQuery(sql);
119
        ResultSetMetaData metaData = rs.getMetaData();
120
        
121
		String fields = "";
122
		for (int i=0; i<metaData.getColumnCount(); i++)
123
		{
124
			if (i==0)
125
				fields =metaData.getColumnName(i+1);
126
			else
127
				fields =fields + ", " + metaData.getColumnName(i+1);
128
		}
129
		rs.close();
130
		String sqlAux = sql.replaceFirst(" [*] ", " " + fields + " ");
131
		System.out.println(sqlAux);
132
		
133
        st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
134
                ResultSet.CONCUR_UPDATABLE);
135
        ResultSet res = st.executeQuery(sqlAux);
136
        if (res.getConcurrency() != ResultSet.CONCUR_UPDATABLE)
137
        {
138
        	System.err.println("Error: No se puede editar la tabla " + sql);
139
        	jdbcWriter = null;
140
        }
141
        else
142
        	jdbcWriter.initialize(con, res);		
143

  
144
		
145
        jdbcSupport = JDBCSupport.newJDBCSupport(con, sql);
146

  
147
	}
148

  
149

  
150
}
151

  
152

  
0 153

  
trunk/libraries/libGDBMS/src/main/java/com/hardcode/gdbms/driver/oracle/OracleTest.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package com.hardcode.gdbms.driver.oracle;
42

  
43
import java.sql.Connection;
44
import java.sql.DriverManager;
45
import java.sql.ResultSet;
46
import java.sql.ResultSetMetaData;
47
import java.sql.SQLException;
48
import java.sql.Statement;
49

  
50
public class OracleTest {
51
	public static void main(String[] args)
52
	{
53
		try {
54
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
55
		} catch (InstantiationException e) {
56
			// TODO Auto-generated catch block
57
			e.printStackTrace();
58
		} catch (IllegalAccessException e) {
59
			// TODO Auto-generated catch block
60
			e.printStackTrace();
61
		} catch (ClassNotFoundException e) {
62
			// TODO Auto-generated catch block
63
			e.printStackTrace();
64
		}
65
		
66
		 String connString="jdbc:oracle:thin:@FPL:1521:SGF";
67

  
68
        try {
69
			Connection conn = DriverManager.getConnection(connString, "SCOTT", "TIGER");
70
			String sql = "SELECT * FROM DEPT";
71
			ResultSet rs = conn.createStatement().executeQuery(sql);
72
			ResultSetMetaData metaData = rs.getMetaData();
73
			String fields = "";
74
			for (int i=0; i<metaData.getColumnCount(); i++)
75
			{
76
				if (i==0)
77
					fields =metaData.getColumnName(i+1);
78
				else
79
					fields =fields + ", " + metaData.getColumnName(i+1);
80
			}
81
			rs.close();
82
			String sqlAux = sql.replaceFirst(" [*] ", " " + fields + " ");
83
			System.out.println(sqlAux);
84
	        Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
85
	                ResultSet.CONCUR_UPDATABLE);
86

  
87
			rs = st.executeQuery(sqlAux);
88
	        if (rs.getConcurrency() != ResultSet.CONCUR_UPDATABLE)
89
	        {
90
	        	System.err.println("Error: No se puede editar la tabla " + fields);
91
	        }
92

  
93
		} catch (SQLException e) {
94
			// TODO Auto-generated catch block
95
			e.printStackTrace();
96
		}
97
	}
98

  
99
}
100

  
101

  
0 102

  

Also available in: Unified diff