Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > java методы crud


Автор: karolinochka 26.5.2013, 09:08
не работают процедурыupdate train и update bus:(помогите пожалуйста найти ошибки
и еще подскажите как выдать всю таблицу на экран.я пыталась сделать,вот что получилось

@Override
    public String toString() {
        return "id:  " +id+ "  Flightnumber:  " + flightnumber + " Pointofdeparture:  " + pointofdeparture + " Pointofarrival:  "+pointofarrival+" DSK:  "+dsk;
        
    }        

Автор: Pawl 26.5.2013, 10:53
Цитата(karolinochka @  26.5.2013,  09:08 Найти цитируемый пост)
не работают процедурыupdate train и update bus

Как не работают? Виды ошибок, места возникновения? А то свою БД вы не приложили, проверить не как.
И в каком классе находится процедура train?

Автор: karolinochka 26.5.2013, 11:09
база в архиве .называется TRANSPORT.в traingateway,trainservice,user/
ошибка java.sql.DataTruncation: Data truncation
    at org.firebirdsql.jdbc.field.FBWorkaroundStringField.setString(FBWorkaroundStringField.java:78)
    at org.firebirdsql.jdbc.AbstractPreparedStatement.setString(AbstractPreparedStatement.java:434)
    at com.subwan.DAL.TrainGateway.merge(TrainGateway.java:95)
    at com.subwan.BL.TrainService.updateTrain(TrainService.java:28)

Автор: Pawl 26.5.2013, 11:57
Ясно. Вашей СУБД у меня нету.
Вы привели ошибки только касаемо train. А касаемо Bus и User?
Выглядит так, будто не принимается тип Long. Я тут просмотрел метод setString класса FBWorkaroundStringField и обнаружил, что он принимает строковый параметр.

Автор: karolinochka 26.5.2013, 12:15
вот бд.в traingateway процедура merge ,trainservice updatetrain и в user updatetrain.это то что отвечает за обновление транспорта......а bus аналогично сделано

Автор: Pawl 26.5.2013, 12:20
Ясно. Вашей СУБД у меня нету.
Выглядит так, будто не принимается тип Long. Я тут просмотрел метод setString класса FBWorkaroundStringField и обнаружил, что он принимает строковый параметр. Попробуйте для эксперимента все поля в БД сделать строковыми и использовать только метод 
Код

preStatement.setString(...);

Автор: karolinochka 26.5.2013, 12:40
исправила все на String.теперь вот такая ошибка
 org.firebirdsql.jdbc.field.TypeConversionException: Error converting to int. T
    at org.firebirdsql.jdbc.field.FBIntegerField.setString(FBIntegerField.java:124)
    at org.firebirdsql.jdbc.AbstractPreparedStatement.setString(AbstractPreparedStatement.java:434)
    at com.subwan.DAL.TrainGateway.merge(TrainGateway.java:96)
    at com.subwan.BL.TrainService.updateTrain(TrainService.java:28)
    at com.subwan.UI.User.updateTrain(User.java:173)
    at com.subwan.UI.User.run(User.java:58)
    at SingleTable.main(SingleTable.java:24)

Автор: Pawl 26.5.2013, 12:48
Мда...  видимо я был не прав. Ведь setLong в методе save, я так понял, проходит? Тут еще может быть вариант с тем что вставляемые данные больше чем предназначеные для них колонки (truncate - усечение). Посмотрите тип соответствующего поля в БД, попробуйте увеличить его размер.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)