i want to post data in oracle database 11g and i enter the data using input field the the data enter to data base but just id coulmn and another string coulmn are get correct data but another coulmn get null or 0 so i can not resolve this problem and in run time i have this error
Invalid column type: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor
this is my code
public Client newClient(Client client){
try {
con = DBConnection.getConnection(driver, url, name, pass);
pstmt = con.prepareStatement("INSERT INTO CLIENT (CID, FIRSTNAME, LASTNAME, CAREER, CSALARY) VALUES (CLIENT_ID.nextval, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1, client.getFirstName());
pstmt.setString(2, client.getLastName());
pstmt.setString(3, client.getCareer());
pstmt.setInt(4, client.getcSalary());
pstmt.executeUpdate();
rs = pstmt.getGeneratedKeys();
rs.next();
Integer id = rs.getInt(1);
client.setcId(id);
}catch(Exception ex){
ex.printStackTrace();
return null;
}finally{
try{ rs.close(); }catch (Exception e){}
try{ pstmt.close();}catch (Exception e){}
try{ con.close();}catch (Exception e){}
}//finally
return client;
}
}
@XmlRootElement
public class Client {
private Integer cId;
private String firstName;
private String lastName;
private String career;
private int cSalary;
public Integer getcId() {
return cId;
}
public void setcId(Integer cId) {
this.cId = cId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getCareer() {
return career;
}
public void setCareer(String career) {
this.career = career;
}
public int getcSalary() {
return cSalary;
}
public void setcSalary(int cSalary) {
this.cSalary = cSalary;
}
}
and this is my SQL
CREATE TABLE "AHMAD"."CLIENT"
( "CID" NUMBER(*,0) NOT NULL ENABLE,
"FIRSTNAME" VARCHAR2(255 BYTE),
"LASTNAME" VARCHAR2(255 BYTE),
"CAREER" VARCHAR2(255 BYTE),
"CSALARY" NUMBER,
CONSTRAINT "CLIENT_PK" PRIMARY KEY ("CID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
plz help me the data is insert into table but not completly and i have this run time error
java.sql.SQLException: Invalid column type: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:358)
at oracle.jdbc.driver.Accessor.getInt(Accessor.java:468)
at oracle.jdbc.driver.OracleReturnResultSet.getInt(OracleReturnResultSet.java:265)
at com.rest.client.ClientDAO.newClient(ClientDAO.java:99)
at com.rest.client.ClientResourcs.newClient(ClientResourcs.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.jav a:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Like Mark suggested, I just faced the same problem and found the solution:
String generatedColumns[] = { "ID" };
stmt = con.prepareStatement(query, generatedColumns);
And after you execute the query, do the following to fetch the inserted ID.
rs = stmt.getGeneratedKeys();
rs.next();
rs.getInt(1);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With