Данные не найдены Исключение

1

Я работал над подключением 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',?,?,?,?,?,?,?,?)");  

Здесь String 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  
  • 2
    Вы опубликовали 90 строк кода, но не указали, где выдается исключение. В идеале вы должны по возможности уменьшить это, чтобы код, который вы публикуете, содержал только то, что требуется для воспроизведения проблемы. (Вам нужны все эти запросы и не-запросы, чтобы воспроизвести проблему?)
  • 0
    @JonSkeet Перед выполнением ps2 я напечатал все значения, которые я использовал для установки ps2.Они напечатаны правильно. Но я не знаю, что случилось после этого
Показать ещё 11 комментариев
Теги:
servlets
jdbc

1 ответ

1
Лучший ответ

Это полная догадка, но почему вы это делаете?

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

Поскольку он вернет true, если он имеет row. Итак, из этого я узнал, что вы хотите проверить, есть ли строка с этим идентификатором?

То, что вы делаете выше,

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)

Извините, если я ошибся.

  • 0
    на самом деле код работает нормально перед выполнением ps2. Я распечатал все rs2.getString (1), n1, n2, n3 и все перед тем, как назначить его в db, они в порядке
  • 0
    Проверьте мой обновленный ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню