BG Development


  Reply to this topicStart new topicStart Poll

> MessageDialog за успешно завършила SQL процедура
mimozichka
Публикувано на: 01-08-2020, 15:11
Quote Post



Име: Мария
Група: Потребител
Ранг: Новопостъпил

Мнения: 35
Регистриран на: 10.03.16



Здравейте! Разучавам Java и MS SQL Server, като съм си поставила за цел от проста Java програмка, да направя връзка към базата данни и да изпълня една процедура с един входящ параметър.
С много зор връзката я направих и даже си стартирам процедурата, но сега имам желание след като е завършила въпросната процедура да ми излиза един диалогов прозорец, за да е ясно, че изпълнението е приключило. Та въпроса ми е как в Java кода да хвана момента, в който се е изпълнила процедурата и тогава да изкарам прозореца? Има ли нещо стандартно, което мога да използвам?

Прилагам и част от кода, за да добиете представа колко съм зле icon_lol.gif icon_lol.gif , но въпреки това имам желание icon_razz.gif


CODE
      class ImportAction implements ActionListener{

            @Override
            public void actionPerformed(ActionEvent arg0) {
                  // TODO Auto-generated method stub
                  String dateForm = dateT.getText().trim();
                  
                  DateFormat originalFormat = new SimpleDateFormat("dd.mm.yyyy");
                  DateFormat targetFormat = new SimpleDateFormat("yyyy-mm-dd");
                  Date date;
                  
                  conn=DButil.connect();
                  
                  try {
                        date = originalFormat.parse(dateForm);
                        String formatDate = targetFormat.format(date);  
                        
                        
                        CallableStatement stmt=conn.prepareCall("{call transferSales(?)}");  
                        stmt.setString(1,formatDate);  
                        stmt.execute();  
                        
                              //Трябва да излиза след успешно завършване на процедурата
                        JOptionPane.showMessageDialog( null, "Данните са прехвърлени.");
            
                  
                  
                  } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                  } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                  }
                  
                  
            }
            
      }


PMEmail Poster
Top
thrawn
Публикувано на: 01-08-2020, 16:10
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2965
Регистриран на: 17.01.17



А кога излиза съобщението, според теб?
PMEmail Poster
Top
ici
Публикувано на: 01-08-2020, 16:17
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 17532
Регистриран на: 06.06.04



stmt.execute() връща bool. Ако резултата е истина, значи всичко е ОК. Трябва само един if


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
mimozichka
Публикувано на: 01-08-2020, 16:24
Quote Post



Име: Мария
Група: Потребител
Ранг: Новопостъпил

Мнения: 35
Регистриран на: 10.03.16



QUOTE (thrawn @ 01-08-2020, 16:10)
А кога излиза съобщението, според теб?

Ами така написано не излиза след успешното приключване на процедурата, защото имах случай в който съобщението ми излезе, но процедурата не беше приключила в базата. Като се замисля вероятно излиза в момента, в който се стартира процедурата. Поправете ме, ако греша.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 01-08-2020, 16:25
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3978
Регистриран на: 21.02.18



QUOTE (ici @ 01-08-2020, 16:17)
stmt.execute() връща bool. Ако резултата е истина, значи всичко е ОК. Трябва само един if

за малко не позна


--------------------
Форумът се премести на нов адрес: https://bgdev-free.asm32.info/
PMEmail PosterUsers Website
Top
mimozichka
Публикувано на: 01-08-2020, 16:25
Quote Post



Име: Мария
Група: Потребител
Ранг: Новопостъпил

Мнения: 35
Регистриран на: 10.03.16



QUOTE (ici @ 01-08-2020, 16:17)
stmt.execute() връща bool. Ако резултата е истина, значи всичко е ОК. Трябва само един if

Благодаря! Ще пробвам icon_smile.gif
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 01-08-2020, 16:33
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3978
Регистриран на: 21.02.18



QUOTE (mimozichka @ 01-08-2020, 16:25)
QUOTE (ici @ 01-08-2020, 16:17)
stmt.execute() връща bool.  Ако резултата е истина, значи всичко е ОК. Трябва само един if

Благодаря! Ще пробвам icon_smile.gif

не го слушай, той е трол като всички останали останали в стария, изиставен и бъгав форум


QUOTE
    true if the first result is a ResultSet object; false if it is an update count or there are no results

TRUE ще се върне, ако резултата от изпълнението на процедурата е ResultSet, и FALSE, ако не е



--------------------
Форумът се премести на нов адрес: https://bgdev-free.asm32.info/
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 01-08-2020, 16:33
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2965
Регистриран на: 17.01.17



Малко по-сложно е.
Съобщението ще излезе ако фрагмент от програмата се изпълни успешно. В противен случай, ще получиш изключение (sqlexception което е редно да се обработи и да покажеш подходящо съобщение и там).

Връщания резултат от execute е леко куц и зависи от това каква заявка се изпълнява (трябва да има връщан резултат от нея - reaultset за да бъде true, а това в твоя случай не става ясно дали става или не, щото зависи какво прави процедурата).
PMEmail Poster
Top
mimozichka
Публикувано на: 01-08-2020, 17:16
Quote Post



Име: Мария
Група: Потребител
Ранг: Новопостъпил

Мнения: 35
Регистриран на: 10.03.16



QUOTE (thrawn @ 01-08-2020, 16:33)
Малко по-сложно е.
Съобщението ще излезе ако фрагмент от програмата се изпълни успешно. В противен случай, ще получиш изключение (sqlexception което е редно да се обработи и да покажеш подходящо съобщение и там).

Връщания резултат от execute е леко куц и зависи от това каква заявка се изпълнява (трябва да има връщан резултат от нея - reaultset за да бъде true, а това в твоя случай не става ясно дали става или не, щото зависи какво прави процедурата).

Значи доколкото разбрах трябва да направя процедурата да връща някакъв резултат накрая, за да мога да проверявам дали се е върнало нещо. Защото в момента процедурата само прави Select и Insert .
PMEmail Poster
Top
thrawn
Публикувано на: 01-08-2020, 17:23
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2965
Регистриран на: 17.01.17



Зависи какво точно се опитваш да провериш. Ако искаш да провериш дали ги има някакви данни с процедура/функция (в твоя случай, след insert) то трябва те да връщат съответния резултат от проверката (например true/false) и съответно трябва да ползваш CallableStatement за да получиш данните.

PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0