Java Oracle JDBC和视图

Java Oracle JDBC和视图,java,oracle,jdbc,view,Java,Oracle,Jdbc,View,我试图从带有executeQuery的视图中获取SELECT语句,但无法获取结果集,元数据是完整的(名称和列数) 我还尝试更改为PreparedStatement和CallableStatement,这是相同的 这是我的密码 private Statement stmt=null; private ResultSet rset=null; ........ rset = stmt.executeQuery("SELECT STUDENT_ID,FIRST_NAME,LAST_NAME FROM

我试图从带有executeQuery的视图中获取SELECT语句,但无法获取结果集,元数据是完整的(名称和列数) 我还尝试更改为PreparedStatement和CallableStatement,这是相同的

这是我的密码

private Statement stmt=null;
private ResultSet rset=null;
........
rset = stmt.executeQuery("SELECT STUDENT_ID,FIRST_NAME,LAST_NAME FROM STUDENT_VIEW");
columnNum=rset.getMetaData().getColumnCount();
toClient.writeInt(columnNum);
for(int i=1;i<=columnNum;i++)
    toClient.writeUTF(rset.getMetaData().getColumnName(i));
if (rset.last()) {
   toClient.writeInt(rset.getRow());
   rset.beforeFirst();
                 }
   while (rset.next())
         for(int i=1;i<=columnNum;i++){
            if(rset.getString(i)!=null)
                  toClient.writeUTF(rset.getString(i));
            else
              toClient.writeUTF(" ");
                                      }
代码运行良好。 有人能帮忙吗

学生的观点

CREATE OR REPLACE VIEW STUDENT_VIEW
AS
SELECT 
    s.student_id,s.first_name,s.last_name,s.phone,s.birth_date,s.street,
    s.zip_code,d.name as Department,d.credits_to_degree,s.credits,s.eligible,c.name as College
FROM 
    STUDENT s,DEPARTMENT d,COLLEGE c
WHERE
    s.department=d.department_id and d.college_id=c.college_id;
其他桌子

create table Department (
             Department_ID varchar(4) not null,
             Name varchar(25) unique,
             Department_Head_ID varchar(9),
             College_ID varchar(4),
             Credits_To_Degree NUMBER(3),
             Students NUMBER(3),
             Faculty NUMBER(3),constraint pkDepartment primary key (Department_ID));

ALTER TABLE Department ADD FOREIGN KEY (Department_Head_ID) REFERENCES  Faculty(Faculty_Id) INITIALLY DEFERRED;
ALTER TABLE Department ADD FOREIGN KEY(College_ID) REFERENCES College(College_ID) INITIALLY DEFERRED;

create table Student (
             Student_ID varchar(9) not null, 
             First_Name varchar(25),
             Last_Name varchar(25), 
             Phone char(11), 
             Birth_Date date, 
             Street varchar(100), 
             Zip_Code char(5),
             Department varchar(4),
             Credits integer,
             Eligible char(4), constraint pkStudent primary key (Student_ID),constraint fkDeptId foreign key (Department) references Department(Department_ID));

create table College(
             College_ID varchar(4) not null,
             Name varchar(25), 
             Since date, 
             Dean_ID varchar(9),constraint pkCollege primary key (College_ID));

我假设
selectQuery()
屏蔽了
stmt
语句的创建和执行。您得到的错误/异常是什么?请将其放在问题中。请编辑您的问题以包含学生视图的定义。谢谢。我编辑了这个问题。对于这个错误,我没有得到任何信息,在rset.last()命令之后,它只是跳到代码的末尾(我知道这是一个非常奇怪的行为),您是否使用例如sql*加上您的查询应该实际返回任何行进行了验证?我的意思是-这可能是视图本身的缺陷还是表中的数据导致视图不返回任何行?这是我做的第一件事。在sql developer中,我正常地获取数据
create table Department (
             Department_ID varchar(4) not null,
             Name varchar(25) unique,
             Department_Head_ID varchar(9),
             College_ID varchar(4),
             Credits_To_Degree NUMBER(3),
             Students NUMBER(3),
             Faculty NUMBER(3),constraint pkDepartment primary key (Department_ID));

ALTER TABLE Department ADD FOREIGN KEY (Department_Head_ID) REFERENCES  Faculty(Faculty_Id) INITIALLY DEFERRED;
ALTER TABLE Department ADD FOREIGN KEY(College_ID) REFERENCES College(College_ID) INITIALLY DEFERRED;

create table Student (
             Student_ID varchar(9) not null, 
             First_Name varchar(25),
             Last_Name varchar(25), 
             Phone char(11), 
             Birth_Date date, 
             Street varchar(100), 
             Zip_Code char(5),
             Department varchar(4),
             Credits integer,
             Eligible char(4), constraint pkStudent primary key (Student_ID),constraint fkDeptId foreign key (Department) references Department(Department_ID));

create table College(
             College_ID varchar(4) not null,
             Name varchar(25), 
             Since date, 
             Dean_ID varchar(9),constraint pkCollege primary key (College_ID));