没有找到数据异常

时间:2014-03-26 15:35:32

标签: java sql servlets jdbc

我正在使用servlets进行jdbc odbc连接。但是我得到java.sql.SQLException:没有找到数据。可能是什么原因。请帮助。我正在寻找我的错误,因为一天但是无法得到直到现在。

Connection con=null;
PreparedStatement ps=null,ps1=null,ps2=null;
ResultSet rs=null,rs1=null;


con=DriverManager.getConnection("jdbc:odbc:SharedCryptography", "fyp", "fyp");
ps=con.prepareStatement("insert into tbGroup values ('G0',?,?,?,'Y')");
ps2=con.prepareStatement("insert into tbGroupAdmin values ('U0',?,?,?,?,?,?,?,?)");  

这里字符串n1,n2,n3,n4,n5,n6,n7,n8是从html格式获得的字符串

String sql1 = "SELECT GNAME,OEMAIL FROM tbGroup where GNAME = '"+n1+"' and OEMAIL = '"+n3+"'" ;          
ps1 = con.prepareStatement(sql1);
rs=ps1.executeQuery();
if(rs.next()){
  out.println("THIS GROUP WITH SAME ID EXISTS");  
}
else{
    ps.setString(1,n1);
    ps.setString(2,n3);
    ps.setString(3,n5);
    ps.execute();
    out.println("inserted");
    ResultSet rs2=null;

    String sql2="SELECT G_ID FROM tbGroup where GNAME like '"+n1+"' and OEMAIL like '"+n3+"'";
    PreparedStatement ps3 = con.prepareStatement(sql2);
    rs2=ps3.executeQuery();

    rs2.next();
    String mypassword="password";
    ps2.setString(1,rs2.getString(1));
    ps2.setString(2,n2);
    ps2.setString(3,mypassword);
    ps2.setString(4,n6);
    ps2.setString(5,n7); 
    ps2.setString(6,n3);
    ps2.setString(7,n4);
    ps2.setInt(8,Integer.parseInt(n8));
    ps2.execute();

}

我的数据库有两个表:

表1:tbGroup

G_ID    VARCHAR2(10)    
GNAME   VARCHAR2(20)        
OEMAIL  VARCHAR2(50)        
Agenda  VARCHAR2(50)    
Status  CHAR(5)         

表2:tbGroupAdmin

GADMIN_ID           VARCHAR2(5) 
GA_GROUPID          VARCHAR2(5) 
GA_NAME         VARCHAR2(20)
GA_PASSWORD         VARCHAR2(20)    
GA_FNAME            VARCHAR2(20)    
LastName            VARCHAR2(20)    
GA_EmailId          VARCHAR2(50)    
GA_ContactNumber    VARCHAR2(20)    
GA_Age          NUMBER  

1 个答案:

答案 0 :(得分:1)

这是一个完整的猜测,但你为什么要这样做?

if(rs.next()){
  out.println("THIS GROUP WITH SAME ID EXISTS");  
}

如果它有row,它将返回true。 因此我知道您要检查是否有一行包含此ID?

你上面做的是

String sql1 = "SELECT GNAME,OEMAIL FROM tbGroup where GNAME = '"+n1+"' and OEMAIL = '"+n3+"'"; 

您需要做的是

select G_ID from tbGroup where GNAME = '"+n1+"' and OEMAIL = '"+n3+"'"; 

*这样您就可以确定是否存在相同的G_ID。*

我认为你错放了 sql1 sql2

此外,在您的代码中,您正在设置

ps2.setString(1,rs2.getString(1));//this string may have size>5 as G_ID has size 10

而G_ADMINID的大小为VARCHAR2(5)

抱歉,如果我出错了。