Автор Тема: Програма за магазин  (Прочетена 6149 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #15 -: 18 Ноември 2014, 20:43:25 »
Промених имената защото наистина бяха калпаво измислени. По принцип слагам имена на класове който говорят за съдържанието на този клас ReportsWindow - СправкиПрозорци или в тоя клас има методи който викат скринове за справките в програмата и метода referenceSales - справкаПродажби и т.н.т. Иначе не знам как е общо прието ако има въобще правило.

Ползвам статични методи именно заради причината да не правя инстанций. Двата метода referenceSales и referenceSupply не могат да бъдат статични или поне по начина който сам ги написал - non-static method getClass() cannot be referenced from a static context.

За повторението на кода!!! Старая се да не се повтарям но още избистрям нещата.

Wanderer

  • Full Member
  • ***
  • Благодарности
  • -Казани: 4
  • -Получени: 26
  • Публикации: 196
Re: Програма за магазин
« Отговор #16 -: 18 Ноември 2014, 21:05:39 »
Цитат
non-static method getClass() cannot be referenced from a static context.

ReportsWindow.class.getResource()

Няма нищо лошо в това да правиш инстанции. Без инстанции как ще се възползваш от неща като полиморфизъм и наследяване ?
“You must make the Journey along the road, nobody is able to do it for you!”

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Програма за магазин
« Отговор #17 -: 25 Януари 2015, 18:11:46 »
Денс се борих малко с твоя проект, но не издържах  и се отказвам за сега  ;D

Ще ти дам и аз няколко препоръки по реда на мъките ми.

Първо не е лошо да добавиш в readme-то инфо за зависимостите на проекта ти, тъй като библиотеките не са включени в проекта.
Примерно apache commons-io, derby  и тнт. После няма да навреди един step by step как да го подкараме тоз нагазин. Таз база данни докато яподкарам ми посивяха, побеляха и па са оцветиха космите в ушите.

А докато се мъчех с derby ми направи впечатление един сериозен проблем който имаш с кода. Тез catch-клаузи не са, за да се принтират някви съобщения само, а за да се реагира на акана ситуация.
Примерно аз нямах jdbc driver и вместо да изтрещи и да умре апликацията само ми изписва една и съща грешка 3-4 пъти един след друг. Ето извадка от твоя код

Код: Java
  1. private static Connection con() {
  2.     try {
  3.         con = DriverManager.getConnection(host, userName, password);
  4.     } catch (SQLException e) {
  5.         System.out.println("DBConection error: " + e.getMessage());
  6.     }
  7.     return con;
  8. }
  9.    
  10. public static Statement stmt() {
  11.     try {
  12.         stmt = con().createStatement();
  13.     } catch (Exception e) {
  14.         System.out.println("Statement error" + e.getMessage());
  15.     }
  16.     return stmt;
  17. }

На 12-ти ред в метода stmt() викаш con(). На него му прилошава като се извика DriverManager.getConnection на 3-ти ред, но вместо да припадка, той пищи, че нямал подходящ драйвър и щастлив връща null. Та stmt() получава като резултат на con() null и се опитва да изпълни createStatement() на тоз null. Естествено, че и това пищи с NullpointerException и влиза в catch блока изписва грешката, но и на тоз метод не му пука, че нищо не работи и си връща и той щастлив един null.

Но това не е всичко :)  Цялата верига всъщност тръгва от класа MainScreenController, метода initialize, който вика един след друг разни други методи дето не се изпълняват като хората, но той си продължава да ги вика. Чак на метода searching() крашва и то защото по някаква случайност в него не хващаш генерално Exception-и, а само SQLException-и и тъй като се получава NullpointerException  апликацията крашва.

Подобен проблем имаш и в BackupDatabase. Там directoryExists() си му сложил, че хвърля IOException, но тоз ексепшън идва от FileUtils.copyDirectory, който викаш в copyFolder().
Получава се следното:
directoryExists() вика copyFolder(). Там изпищява някъв IOException, но ти в метода "обработваш" този ексепшън в catch блока, което означава че directoryExists() няма да го получи нивга.

Друг проблем  тука е код като този
Код: Java
  1. createDiectory();
  2. copyFolder(source, destination);

Ами ако createDiectory даде грешка? И там хващаш всякакви видове ексепшъни и ги принтираш/обработавш на екрана. И въпреки че нямаш направена директория викаш copyFolder().

Та като цяло мрънкането ми е на тема exception-и. Попрочети малко за тях, за try-catch-throw блокове и тнт.
Хващай специфични видове грешки и то само ако ще ги обработваш смислено. Само да ги принтираш не е смислено обработване.
А дори и да решиш само да ги принтираш, то добави някаква допълнителна инфорамция, която ще ти помогне да разбереш къде се е случил проблема. При един NullpointerException всичко което се изписва е "null".  Ходи търси от къде идва тоз надпис после :)

Колкото до структурата на кода и OOP мисля, че Wanderer ти е дал достатъчно насоки.

Wanderer

  • Full Member
  • ***
  • Благодарности
  • -Казани: 4
  • -Получени: 26
  • Публикации: 196
Re: Програма за магазин
« Отговор #18 -: 25 Януари 2015, 18:33:27 »
Цитат
Първо не е лошо да добавиш в readme-то инфо за зависимостите на проекта ти, тъй като библиотеките не са включени в проекта.
Примерно apache commons-io, derby  и тнт. После няма да навреди един step by step как да го подкараме тоз нагазин. Таз база данни докато яподкарам ми посивяха, побеляха и па са оцветиха космите в ушите.

За да няма не разбрали, ще кажа как се прави това - всеки проект, без значение какъв е трябва да може да се подкара с не повече от 1-2 реда в терминала след като му се свалят кодовете. Това се постига, чрез използването на някакво билд система. В Джава имаш голям избор - maven, ant, gradle, ivy, и др. Аз лично съм фен на maven, затова ще дам пример с него, но същите неща могат да се постигнат с всяка свестна билд система.

Ето пример от едно приложение, което правих в университета:

Код: XML
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.         <modelVersion>4.0.0</modelVersion>
  4.         <groupId>com.github.my-git-hub-name-here</groupId>
  5.         <artifactId>glViewer</artifactId>
  6.         <version>0.0.1-SNAPSHOT</version>
  7.         <name>OpenGL Viewer</name>
  8.  
  9.         <properties>
  10.                 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  11.                 <jogl-version>2.2.4</jogl-version>
  12.                 <artifact-name>${project.artifactId}</artifact-name>
  13.                 <dependencies-folder>lib</dependencies-folder>
  14.                 <distribution-folder>GLViewer</distribution-folder>
  15.                 <deploy-path>${basedir}/${distribution-folder}</deploy-path>
  16.         </properties>
  17.  
  18.         <build>
  19.                 <scriptSourceDirectory></scriptSourceDirectory>
  20.                 <finalName>${artifact-name}</finalName>
  21.                 <plugins>
  22.                         <plugin>
  23.                                 <groupId>org.apache.maven.plugins</groupId>
  24.                                 <artifactId>maven-clean-plugin</artifactId>
  25.                                 <version>2.6</version>
  26.                                 <executions>
  27.                                         <execution>
  28.                                                 <id>clean-deploy-dir</id>
  29.                                                 <phase>clean</phase>
  30.                                                 <goals>
  31.                                                         <goal>clean</goal>
  32.                                                 </goals>
  33.  
  34.                                                 <configuration>
  35.                                                         <filesets>
  36.                                                                 <fileset>
  37.                                                                         <directory>${distribution-folder}</directory>
  38.                                                                         <followSymlinks>false</followSymlinks>
  39.                                                                 </fileset>
  40.                                                         </filesets>
  41.                                                 </configuration>
  42.                                         </execution>
  43.                                 </executions>
  44.                         </plugin>
  45.  
  46.                         <plugin>
  47.                                 <artifactId>maven-compiler-plugin</artifactId>
  48.                                 <version>3.1</version>
  49.                                 <configuration>
  50.                                         <source>1.8</source>
  51.                                         <target>1.8</target>
  52.                                         <optimize>true</optimize>
  53.                                         <debug>true</debug>
  54.                                         <encoding>utf-8</encoding>
  55.                                         <useIncrementalCompilation>false</useIncrementalCompilation>
  56.                                         <fork>true</fork>
  57.                                 </configuration>
  58.                         </plugin>
  59.  
  60.                         <plugin>
  61.                                 <groupId>org.apache.maven.plugins</groupId>
  62.                                 <artifactId>maven-dependency-plugin</artifactId>
  63.                                 <version>2.8</version>
  64.                                 <executions>
  65.                                         <execution>
  66.                                                 <id>copy-dependencies</id>
  67.                                                 <phase>install</phase>
  68.                                                 <goals>
  69.                                                         <goal>copy-dependencies</goal>
  70.                                                 </goals>
  71.                                                 <configuration>
  72.                                                         <overWriteReleases>false</overWriteReleases>
  73.                                                         <overWriteSnapshots>true</overWriteSnapshots>
  74.                                                         <overWriteIfNewer>true</overWriteIfNewer>
  75.                                                         <includeScope>runtime</includeScope>
  76.                                                         <outputDirectory>${deploy-path}/${dependencies-folder}</outputDirectory>
  77.                                                 </configuration>
  78.                                         </execution>
  79.  
  80.                                         <execution>
  81.                                                 <id>copy-application</id>
  82.                                                 <phase>install</phase>
  83.                                                 <goals>
  84.                                                         <goal>copy</goal>
  85.                                                 </goals>
  86.                                                 <configuration>
  87.                                                         <artifactItems>
  88.                                                                 <artifactItem>
  89.                                                                         <groupId>${project.groupId}</groupId>
  90.                                                                         <artifactId>${project.artifactId}</artifactId>
  91.                                                                         <version>${project.version}</version>
  92.                                                                         <type>${project.packaging}</type>
  93.                                                                         <destFileName>${artifact-name}.jar</destFileName>
  94.                                                                 </artifactItem>
  95.                                                         </artifactItems>
  96.                                                         <outputDirectory>${deploy-path}</outputDirectory>
  97.                                                 </configuration>
  98.                                         </execution>
  99.                                 </executions>
  100.                         </plugin>
  101.  
  102.                         <plugin>
  103.                                 <groupId>org.apache.maven.plugins</groupId>
  104.                                 <artifactId>maven-jar-plugin</artifactId>
  105.                                 <version>2.5</version>
  106.                                 <executions>
  107.                                         <execution>
  108.                                                 <id>create-runnable-jar</id>
  109.                                                 <phase>install</phase>
  110.                                         </execution>
  111.                                 </executions>
  112.                                 <configuration>
  113.                                         <archive>
  114.                                                 <manifest>
  115.                                                         <addClasspath>true</addClasspath>
  116.                                                         <classpathPrefix>${dependencies-folder}/</classpathPrefix>
  117.                                                         <mainClass>com.github.svetlinzarev.cg.glviewer.EntryPoint</mainClass>
  118.                                                 </manifest>
  119.                                         </archive>
  120.                                 </configuration>
  121.                         </plugin>
  122.  
  123.                         <plugin>
  124.                                 <groupId>org.apache.maven.plugins</groupId>
  125.                                 <artifactId>maven-resources-plugin</artifactId>
  126.                                 <version>2.7</version>
  127.                                 <executions>
  128.                                         <execution>
  129.                                                 <id>copy-launcher-script</id>
  130.                                                 <phase>install</phase>
  131.                                                 <goals>
  132.                                                         <goal>copy-resources</goal>
  133.                                                 </goals>
  134.                                                 <configuration>
  135.                                                         <outputDirectory>${deploy-path}</outputDirectory>
  136.                                                         <resources>
  137.                                                                 <resource>
  138.                                                                         <directory>${basedir}/src/main/scripts</directory>
  139.                                                                         <filtering>true</filtering>
  140.                                                                 </resource>
  141.                                                         </resources>
  142.                                                 </configuration>
  143.                                         </execution>
  144.                                 </executions>
  145.                         </plugin>
  146.                 </plugins>
  147.         </build>
  148.  
  149.         <dependencies>
  150.                 <dependency>
  151.                         <groupId>org.jogamp.jogl</groupId>
  152.                         <artifactId>jogl-all-main</artifactId>
  153.                         <version>${jogl-version}</version>
  154.                 </dependency>
  155.  
  156.                 <dependency>
  157.                         <groupId>org.jogamp.gluegen</groupId>
  158.                         <artifactId>gluegen-rt-main</artifactId>
  159.                         <version>${jogl-version}</version>
  160.                 </dependency>
  161.  
  162.                 <dependency>
  163.                         <groupId>org.slf4j</groupId>
  164.                         <artifactId>slf4j-api</artifactId>
  165.                         <version>1.7.7</version>
  166.                 </dependency>
  167.  
  168.                 <dependency>
  169.                         <groupId>ch.qos.logback</groupId>
  170.                         <artifactId>logback-classic</artifactId>
  171.                         <version>1.1.2</version>
  172.                 </dependency>
  173.  
  174.                 <dependency>
  175.                         <groupId>junit</groupId>
  176.                         <artifactId>junit</artifactId>
  177.                         <version>4.11</version>
  178.                         <scope>test</scope>
  179.                 </dependency>
  180.  
  181.         </dependencies>
  182. </project>

Примерния pom.xml, наистина е дълъг, защото прави доста работи:
-сваля всички зависимости на моето приложение
-компилира го, като задава EntryPoint-a (класа с мейн метода)
-задава class path-a (къде да се търсят библиотеките и класовете)
-създава необходимите директории
-копира всички зависимости където им е мастото

В крайна сметка се получава:

/root folder
--/lib -> тук седят всички зависимости
--/logs -> тук се пазят логовете от изпълнението
--launcher -> скрипт за стартиранена прилогението
--glViewer.jar -> главният изпълним файл

Всеки който иска да подкара моето приложение трябва само да напише mvn clean install,
като maven ще свали от нета каквото е необходимо, ще компилира приложението, и накрая ще сложе всички елементи, където им е мястото. И няма значение дали ползваш еклипс, интели-джей или нет биинс. Всичко се свежда до един ред и просто работи  :)

ПП: в твоя случай ти е достатъчна и само <dependencies></dependencies> частта
« Последна редакция: 25 Януари 2015, 18:36:24 от Wanderer »
“You must make the Journey along the road, nobody is able to do it for you!”

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #19 -: 25 Януари 2015, 19:56:57 »
Благодаря ви. Днес цял ден чета вашите препоръки и понеже съм доста бос още мисля да ги почна ред по ред защото ми дойдеха в повече. Така де някои работи които сте написали въобще не съм знаел че съществуват.

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #20 -: 25 Януари 2015, 22:53:08 »
@kjufte
1. Това за зависимостите че трябва да кажа в readme файла че и тези библиотеки commons-io, derby вървят към проекта ОК, мислил съм че аз кат го знам и всички го знаят.
2. Какво имаш в предвид под един step by step как да го подкараме тоз нагазин?

3. Базата данни в маин пакета си има sql правиш базата и я слагаш при проекта ти защото тя работи в мобилен режим така да кажа, върви си с приложението.

4. Кода дето прави връзка с базата данни. Тези catch - ове освен че са да си принтна каква е грешката нали и спират изпълнението на кода и ако нямаш драйвер спира приложението и трещи грешка DBConection error No suitable driver found for jadbc:derby:Store
са защо я мята тая грешка няколко пъти ??? та защо връща null нали кода е в catch блока и спира изпълнението на програмата и защо на con му прилошава като извика DriverManager.getConnection.

5. Метода initialize дето е в MainScreenController не се ли слагат в него неща дето трябва да се изпълнят при отваряне на MainScreen джама и какво им е на тези медоти дет се викат в initialize?

Сега с тези ексцепшъни каде къв ексцепшън трябва да пусна не съм запознат  та ако знаеш някои туториал ще е добре щот пишеш в нета exception handling и почват едно и също ама никои не казва каква грешка да се прихваща при различни ситуации.

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Програма за магазин
« Отговор #21 -: 26 Януари 2015, 00:23:26 »
Таз база данни защо трябва аз да я създавам ръчно, и после да търся къде какви скриптове има, че да га изпълнявам, за да се подкара цялата работа? Не можеш ли да автоматизираш процеса? Стартираш приложението, правиш връзка и ако е нужно създаваш Store, правиш проверка дали нужните таблици ги има и ако не изпълняваш скрипта, който ги създава или нещо такова.

Аз исках да стартирам програмата ти, за да използвам готовата ти база данни и да си поиграя с JasperReports. Целта ми беше уж да стане по-бързо, а то ми отне повече от половин час докато наглася таз готова база данни и ми се отщя да си играя :)

Идеята на catch-блока е да реагираш адекватно на някакъв вид грешка. Кой метод какъв вид грешки хвърля може да провериш в документацията. Примерно в apache commons io writeStringToFile може да видиш, че хвърля
Цитат
Throws:
IOException - in case of an I/O error
UnsupportedEncodingException - if the encoding is not supported by the VM

В зависимост от това каква е грешката може или само да я логнеш, или да се опиташ да я поправиш, или ако е фатална направо да спираш програмата. В твоя случай базата данни е с екзистенциално значение за програмата ти. Ако нямаш връзка с нея програмата ти нищо не може.

След като се изпълни кода в catch-а програмата продължава на следващия ред след try-catch блока. При тебе това е return-на на саответния метод.

Ето ти нещо за четене.
« Последна редакция: 26 Януари 2015, 00:31:22 от kjufte »

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #22 -: 26 Януари 2015, 09:49:01 »
Това че след като се изпълни кода в catch-а, не спира програмата а  продължава на следващия ред не го знаех мислех че влезе ли там спира изпълнението на кода, не знам как съм се подвел така ама сега ми стана ясно защо con връща null.

Между другото това с JasperReports не можах да го подкарам колкото и гимнастики да правех в conf файла му и до колкото разбрах проблема бил че ползвам Java 8.
« Последна редакция: 26 Януари 2015, 11:07:03 от Meniak »

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Програма за магазин
« Отговор #23 -: 26 Януари 2015, 18:41:36 »
Да java 8 е проблема на   iReports. Свали си jre  или jdk 1.7.x, ако нямаш. После в папката на инсталацията на iReports отваряш etc/ireportpro.conf  и намираш един изкоментиран ред с jdkhome="....". Откоментираш го и му добавяш правилната пътека към jre/jdk 1.7.x

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #24 -: 27 Януари 2015, 18:02:52 »
Направих някои промени по кода и сега мисля че е по - добре макар че още не съм на ясно с Exception - ните в смисъл не знам как може да гръмне кода за да сложа точния Exception. Сега мисля да направя в readme - то едно упътване как да подкараш програмата и се чудя още как ще стане. Това с maven дето каза @Wanderer е много добре но ще ми отнеме време да го направя.

Wanderer

  • Full Member
  • ***
  • Благодарности
  • -Казани: 4
  • -Получени: 26
  • Публикации: 196
Re: Програма за магазин
« Отговор #25 -: 27 Януари 2015, 18:51:51 »
Само да вметна, че този който иска да ти подкара програмата не трябва ръчно да създава базата. Твоето приложение трябва да провери при стартиране дали има база и ако няма да я създаде. Друг вариант е програмата ти да чете някакъв .properties файл (става много лесно в джава) и да проверява дали има запис createDatabase=true примерно и ако има създава базата, и го сетва на false, така че при следващо стартиране да не създава. Варианти много  ;)
“You must make the Journey along the road, nobody is able to do it for you!”

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Програма за магазин
« Отговор #26 -: 29 Януари 2015, 10:13:59 »
Хвърлих едно око на последните ти няколко comiit-а и като видях как си имплементирал създаването на базата данни и се сетих че и предния път исках да ти пиша за имената съдържанието и какво връщат функциите/методите ти.

Функциите ти трябва да имат някаква точно определена компактна задача и евентуално резултат. Трябва да са им слагаш такива имена. че като го прочетеш и веднага да знаеш за какво става въпрос и какво да очакваш. При тебе нещата са направо лудница.

Код: Java
  1.  //TODO This is not a good way to check whether the database exists
  2. public static void datadaseFolderExists() {
  3.     try {
  4.         if (destination.exists() && destination.isDirectory()) {
  5.             System.out.println("Database folder exists");
  6.         } else {
  7.             System.out.println("Database folder not exists");
  8.             createDatadase();
  9.         }
  10.     } catch (Exception e) {
  11.         System.out.println("Check database exists error" + e.getMessage());
  12.     }
  13. }

или в BackupDatabase
Код: Java
  1. public static void directoryExists() throws IOException {
  2.     if (destination.exists() && destination.isDirectory()) {
  3.         deleteDirectory(destination);
  4.         copyFolder(source, destination);
  5.     } else {
  6.         destination.mkdir();
  7.         copyFolder(source, destination);
  8.     }
  9. }

С тези имена методите ти трябва
1. да връщат boolean, а не void
2. да не правят нищо друго совен да отговарят на въпроса съществува ли с Да или Не.

directoryExists при тебе е направо швейцарско ножче - прави два вида проверки, трие, копира, създава и накрая не връща нищо.
Друг пример за кофти име е функцията searching в MainScreenController. Това ти е функцията, която ти пълни таблицата с артикули от базата данни, а не просто някаква търсачка. Освен това имената на методите ти трябва да съдържат императивен глагол. пример: search(), searchForArticle() ...
« Последна редакция: 29 Януари 2015, 10:43:34 от kjufte »

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #27 -: 29 Януари 2015, 11:17:08 »
Да ще прочета малко за добрите практики с именуване на методи и класове. и @Wanderer ми каза да им обърна внимание ама сам забравил.

Но пък сега базата си се създава сами само трябва да си добавиш към проекта двата .jar файла и програмата тръгва НО начина по който проверявам дали базата съществува не ми харесва защото това е проверка дали папката съществува а не базата.

Пробвах с този код ама нещо не сработи за това сам оставил и коментар на моя метод datadaseFolderExists че това с smell и трябва го оправя.
        DatabaseMetaData dbmd = connection.getMetaData();
        ResultSet rs = dbmd.getTables(null, null, sTablename.toUpperCase(),null);
        if(rs.next())
        {
            System.out.println("Table "+rs.getString("TABLE_NAME")+"already exists !!");
        }
        else
        {
            System.out.println("Write your create table function here !!!");
        }

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: Програма за магазин
« Отговор #28 -: 29 Януари 2015, 14:30:52 »
След като си добавил create=true, то проверката за папката дали съществува е излишна, тъй като тя бива създадена така или иначе като извикаш за първи път
Код: Java
  1. con = DriverManager.getConnection(host, userName, password);

Този ред изглежда да е  напълно излишен.
Код: Java
  1. private static final File destination = new File("Store");

Използвай SCHEMA за проверка на базата данни. В моменат тъй като не даваш изрично име на схемата, се създава схема с името на потребителя (username), или в твоя случай MENIAK (името на схемата е винаги главни букви). Та добави една променлива dbschema примерно. Прaвиш проверка дали схемата съществува и ако не създаваш таблиците си.
Код: Java
  1. if (!executeQuery("SELECT SCHEMANAME FROM SYS.SYSSCHEMAS WHERE SCHEMANAME = '" + dbschema + "'").next()) {
  2.    createDBStructure();
  3. } else {
  4.    System.out.println("Im good to go...");          
  5. }

В createDBStructure() създай нужните таблици, като използваш дадената схема
Код: Java
  1. "CREATE TABLE " + dbschema + ".ARTICLE " ...
Или използвай SET SCHEMA.
« Последна редакция: 29 Януари 2015, 14:43:17 от kjufte »

Meniak

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 4
  • Публикации: 224
Re: Програма за магазин
« Отговор #29 -: 30 Януари 2015, 21:05:45 »
Така сега както сме го направили бива, само не ми харесва че тази проверка минава всеки път а тя ти трябва само един пък ако я няма базата да я направи и до там.
А и сам се заял с тоя Jasper Report ама нещо не ми светва как да го имплементирам в кода. Jrxml файла го направих с IReport ама до там.