2016-08-19 8 views
1

JavaのJDBCコードを作成してレコードのテーブルを入力していますが、エラーが発生しましたjava.sql.SQLException:ORA-01438:値が指定より大きいこの列に許容される精度はです。私の理解では、私はのクラスにStudentDAOという文でエラーが発生しました。int result = pst.executeUpdate();はここレコードを挿入中にJDBC Javaでエラーが発生する

package com.wipro.dao; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 

import com.wipro.util.DBUtil; 
import com.wipro.util.Student; 

//Crud operation logic 
public class StudentDAO { 

    public String insertStudent(Student Student17){ 
     String output = "fail"; 
     try{ 

      Connection conn = DBUtil.getDBConnection(); 
      PreparedStatement pst = conn.prepareStatement("insert into Student17(stdid,name,sub1,sub2,sub3,total,avg) values(?,?,?,?,?,?,?)"); 
      pst.setInt(1, Student17.getStdid()); 
      pst.setString(2, Student17.getName()); 
      pst.setInt(3, Student17.getSub1()); 
      pst.setInt(4, Student17.getSub2()); 
      pst.setInt(5, Student17.getSub3()); 
      pst.setInt(6, Student17.getTotal()); 
      pst.setInt(7, Student17.getAvg()); 

      //System.out.println("Output===== " + Student17.getTotal()); 
      //System.out.println("Output===== " + Student17.getAvg()); 

      //System.out.println("Output===== " + Student17.getName()); 

      //System.out.println("Output===== " + Student17.getSub1()); 

      //System.out.println("Output===== " + Student17.getSub2()); 

      //System.out.println("Output===== " + Student17.getSub3()); 

      int result = pst.executeUpdate(); 
      if(result != 0){ 
       output = "Success"; 
      } 
      conn.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return output; 
    } 

} 

package com.wipro.service; 

import com.wipro.dao.StudentDAO; 
import com.wipro.util.Student; 

public class StudentService { 
    public String InsertStudentService(Student Student17){ 
     String result = "Validation Error"; 
     if(Student17.getStdid()==0||Student17.getName()==null||Student17.getSub1()<=0||Student17.getSub2()<=0||Student17.getSub3()<=0) 
      return result; 
     else{ 
      int total = Student17.getSub1() + Student17.getSub2() + Student17.getSub3(); 
      Student17.setTotal(total); 
      Student17.setAvg(total/3); 
      StudentDAO studentdao = new StudentDAO(); 
      studentdao.insertStudent(Student17); 
      result = studentdao.insertStudent(Student17); 
      return result; 
     } 
    } 
} 


package com.wipro.util; 

import java.sql.Connection; 
import java.sql.DriverManager; 

public class DBUtil { 

    public static Connection getDBConnection() { 
     Connection conn = null; 
     try{ 
     Class.forName("oracle.jdbc.driver.OracleDriver");   

     conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","oracle"); 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return conn; 
    } 

} 

package com.wipro.util; 

public class Student { 
    private int stdid; 
    private String name; 
    private int sub1, sub2, sub3; 
    private int total; 
    private int avg; 


    public void setStdid(int stdid) { 
     this.stdid = stdid; 
    } 
    public int getStdid() { 
     return stdid; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public int getSub1() { 
     return sub1; 
    } 
    public void setSub1(int sub1) { 
     this.sub1 = sub1; 
    } 
    public int getSub2() { 
     return sub2; 
    } 
    public void setSub2(int sub2) { 
     this.sub2 = sub2; 
    } 
    public int getSub3() { 
     return sub3; 
    } 
    public void setSub3(int sub3) { 
     this.sub3 = sub3; 
    } 
    public int getTotal() { 
     return total; 
    } 
    public void setTotal(int total) { 
     this.total = total; 
    } 
    public int getAvg() { 
     return avg; 
    } 
    public void setAvg(int avg) { 
     this.avg = avg; 
    } 

} 


package com.wipro.main; 

import com.wipro.service.StudentService; 
import com.wipro.util.Student; 

public class MainClass { 
    public static void main(String[] args){ 
     Student Student17 = new Student(); 

     Student17.setStdid(10); 
     Student17.setName("karan"); 
     Student17.setSub1(80); 
     Student17.setSub2(90); 
     Student17.setSub3(100); 

     StudentService service = new StudentService(); 
     String result = service.InsertStudentService(Student17); 
     System.out.println("Output: "+ result); 

    } 
} 

エラーI'am私のコードで取得(文でStudentDAOクラスでint型の結果= pst.executeUpdateをエラーを取得しI'am私の理解で

java.sql.SQLException: ORA-01438: value larger than specified precision allowed for this column 

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) 
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) 
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216) 
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955) 
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169) 
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285) 
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368) 
    at com.wipro.dao.StudentDAO.insertStudent(StudentDAO.java:37) 
    at com.wipro.service.StudentService.InsertStudentService(StudentService.java:16) 
    at com.wipro.main.MainClass.main(MainClass.java:17) 
java.sql.SQLException: ORA-01438: value larger than specified precision allowed for this column 

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) 
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) 
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) 
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216) 
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955) 
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1169) 
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285) 
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368) 
    at com.wipro.dao.StudentDAO.insertStudent(StudentDAO.java:37) 
    at com.wipro.service.StudentService.InsertStudentService(StudentService.java:17) 
    at com.wipro.main.MainClass.main(MainClass.java:17) 
Output: fail 

です); お願いします。前もって感謝します。

+0

Oは、メッセージがprety明らかだと思います。 – Jens

+1

という大きすぎるカラムに値を追加し、テーブル定義(投稿していないのでできないので)を見て、それがどのカラムであるかを知ることができるはずです。 –

+0

これは私のテーブルを作成するために使用したSQLコマンドです - create table Student17(stdid number(3)プライマリキー、name varchar2(100)、sub1 number(2)、sub2 number(2)、sub3 number(2) 、総数(3)、平均回数(3))。 –

答えて

1

問題は3桁の数字なので、sub3にあります。

create table Student17(
    stdid number(3) primary key, 
    name varchar2(100), 
    sub1 number(2), 
    sub2 number(2), 
    sub3 number(2), 
    total number(3), 
    avg number(3) 
); 
sub3 number(2) 

はその後のコードで、これを変更:Student17.setSub3(100);

+0

ありがとうございました。私は番号を変更しましたが、エラーが発生しました。 java.sql.SQLException:ORA-00001:ユニーク制約(SYSTEM.SYS_C004025)が –

+0

@tj_lucasに違反しました。これは、すでに学生ID「10」のレコードをあなたの表。 IDを変更してもう一度実行してください。 – Plirkee

+0

ありがとう@edu。出来た。 –

関連する問題