1 Востаннє редагувалося Lujok (19.10.2015 18:11:53)

Тема: SQL error or missing database (no such table: family)

Я створив метод для створення нових таблиць .

...
 String strNewTopicSql =  JOptionPane.showInputDialog(strInput);
 StringBuffer inQuery = new StringBuffer();
...

 String sql =  "CREATE TABLE   [ "+strNewTopicSql+"] (  "+inQuery +"  ) " ; 
 statmt.execute(sql);

прикрутив його до кнопки . Таблиці створюються та їх імена додаються в таблицю tableName . Коли  натискати кнопку SelectTopic повинна відкриватися вибрана таблиця . Але відкриваються лише ті які створені в  SQLite Expert Personal  , а ті які створені за допомогою мого коду не відкриваються. пише : SQL error or missing database (no such table: family)

Post's attachments

noSuchTable.png 34.54 kb, 246 downloads since 2015-10-19 

2 Востаннє редагувалося Lujok (19.10.2015 18:20:00)

Re: SQL error or missing database (no such table: family)

Ось малюнок БД в SQLiteExpert Personal

вкладка DLL  в SQLiteExpert Personal :
1  CREATE TABLE [ family] (   ID  INTEGER PRIMARY KEY   AUTOINCREMENT , UA TEXT(50), EN TEXT(50)  );

Post's attachments

tableSEP.png 30.15 kb, 258 downloads since 2015-10-19 

3

Re: SQL error or missing database (no such table: family)

Телепати вже поспішають, чекайте.

4

Re: SQL error or missing database (no such table: family)

koala написав:

Телепати вже поспішають, чекайте.

Що ви хочете сказати ?   Каюк чи гаплик ? )

5

Re: SQL error or missing database (no such table: family)

Я хочу сказати, що код, який власне показує проблему, ви не навели.

6 Востаннє редагувалося Lujok (19.10.2015 20:13:53)

Re: SQL error or missing database (no such table: family)

koala написав:

Я хочу сказати, що код, який власне показує проблему, ви не навели.

метод в моделі таблиці

 public void selectTopic () throws SQLException{
         
          int n = jtable.getSelectedRow() ;
          int m = jtable.getSelectedColumn() ;
          Statement statmt = null;
          statmt = conn.createStatement();
          try{
            setTableName ((String) getValueAt(n , m));   // сетер для перемінної tableName  
            buttonSelectTopic.setEnabled(false);
            data.clear();
            colTypesList.clear();
            colNamesList.clear();
            getTableContents(getTableName());   // в метод  getTableContents() передається імя таблиці яку треба  відкрити 
            fireTableStructureChanged();

    
            if (rs!=null ) rs.close();
            if (statmt!=null ) statmt.close();
     
     }

метод getTableContents(String tableName)  який виводить таблицю з любою кількістю колонок

public void getTableContents(String tableName)
             throws SQLException {
             Statement statement = conn.createStatement();
             meta = conn.getMetaData();
             rs = meta.getColumns(null, null, tableName, null);// отримати метадані по колонка
            while (rs.next()) {

               colNamesList.add(rs.getString("COLUMN_NAME"));// добавити в список імя колонок
//             colNamesList.add(rs.getMetaData().getColumnName(n));
               int dbType = rs.getInt("DATA_TYPE");// визначити тип колонки
              // вибрати потрібний тип
                switch (dbType) {
                   case Types.INTEGER:
                      colTypesList.add(Integer.class);
                      break;
                   case Types.FLOAT:
                      colTypesList.add(Float.class);
                      break;
                 //case Types.DOUBLE:
                   case Types.REAL:
                      colTypesList.add(Double.class);
                      break;
                   case Types.DATE:
                   case Types.TIME:
                   case Types.TIMESTAMP:
                      colTypesList.add(java.sql.Date.class);
                      break;
                    default:
                      colTypesList.add(String.class);
                     break;
                 };
             }
  // імена колонок зберегти в окремий масив columnNames
            columnNames = new String[colNamesList.size()];
            colNamesList.toArray(columnNames);      
        
        // типи колонок зберегти в окремий масив  columnClasses
           columnClasses = new Class[colTypesList.size()];
           colTypesList.toArray(columnClasses);

           if (rs!=null ) rs.close();
           if (statement!=null ) statement.close();
        System.out.println("DO  rs = statement.executeQuery(\"SELECT * FROM \" + tableName); -----"+tableName);
        statement = conn.createStatement();


          rs = statement.executeQuery("SELECT * FROM " + tableName); // НA ЦЕЙ РЯДОК ПОСИЛАЄТЬСЯ  NetBeans коли говорить про помилку


         ArrayList rowList = new ArrayList(); // зберігає записи із таблиці

        // цикл по всим записам таблиці
         while (rs.next()) {
            ArrayList cellList = new ArrayList();// зберігає дані по кожній колонці (ячейці)
            for (int i = 0; i < colTypesList.size(); i++) {
                Object cellValue = null;
                if (columnClasses[i] == String.class) {
                    cellValue = rs.getString(columnNames[i]);
                } else if (columnClasses[i] == Integer.class) {
                    cellValue = new Integer(rs.getInt(columnNames[i]));
                } else if (columnClasses[i] == Float.class) {
                    cellValue = new Float(rs.getInt(columnNames[i]));
                } else if (columnClasses[i] == Double.class) {
                    cellValue = new Double(rs.getDouble(columnNames[i]));
                } else if (columnClasses[i] == java.sql.Date.class) {
                    cellValue = rs.getDate(columnNames[i]);
                } else {
                    System.out.println("Не можу визначити тип поля " + columnNames[i]);
                }
                cellList.add(cellValue);
            }// for
            Object[] cells = cellList.toArray();
            data.add(cells);
        } // while
        if (rs!=null ) rs.close();
        if (statement!=null ) statement.close();
//          System.out.println(" method getTableContents(tableName);");
    }

7

Re: SQL error or missing database (no such table: family)

І в якому ж саме рядку виникає виключна ситуація?

8 Востаннє редагувалося Lujok (19.10.2015 19:56:56)

Re: SQL error or missing database (no such table: family)

koala написав:

І в якому ж саме рядку виникає виключна ситуація?

getTableContents():

rs = statement.executeQuery("SELECT * FROM " + tableName); 

// НA ЦЕЙ РЯДОК ПОСИЛАЄТЬСЯ  NetBeans коли говорить про помилку

9 Востаннє редагувалося koala (19.10.2015 20:00:34)

Re: SQL error or missing database (no such table: family)

Спобуйте для початку додати лапки:
"SELECT * FROM `" + tableName +"`"
І вирівняйте відступи, читати ж боляче.

Подякували: leofun011

10

Re: SQL error or missing database (no such table: family)

"Огласите весь список, пожалуйста" EXCEPTION  ;)

11 Востаннє редагувалося Lujok (19.10.2015 20:16:48)

Re: SQL error or missing database (no such table: family)

fed_lviv написав:

"Огласите весь список, пожалуйста" EXCEPTION  ;)

жовт 19, 2015 9:04:40 PM person.buttonSelectTopicListenr actionPerformed
SEVERE: null
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: family)
    at org.sqlite.core.DB.newSQLException(DB.java:890)
    at org.sqlite.core.DB.newSQLException(DB.java:901)
    at org.sqlite.core.DB.throwex(DB.java:868)
    at org.sqlite.core.NativeDB.prepare(Native Method)
    at org.sqlite.core.DB.prepare(DB.java:211)
    at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:81)
    at person.TM.getTableContents(TM.java:803)
    at person.TM.selectTopic(TM.java:589)
    at person.buttonSelectTopicListenr.actionPerformed(buttonSelectTopicListenr.java:36)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:699)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:713)
    at java.awt.EventQueue$4.run(EventQueue.java:711)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

12 Востаннє редагувалося Lujok (19.10.2015 20:20:08)

Re: SQL error or missing database (no such table: family)

Ось так мабудь краще  якраз все вмістилося

Post's attachments

Exception1.png 24.34 kb, 245 downloads since 2015-10-19 

13

Re: SQL error or missing database (no such table: family)

Ось тут начебто все гуд:

rs = statement.executeQuery("SELECT * FROM " + tableName); 

Мене більш цікавить ось це:

 statmt = conn.createStatement();

Де продовження?

 statmt = conn.createStatement();
statmt .executeUpdate("CREATE TABLE..................");

14 Востаннє редагувалося fed_lviv (19.10.2015 20:53:04)

Re: SQL error or missing database (no such table: family)

Сорі, повертаємося до Вашого першого повідомлення, а конкретніше до:

String sql =  "CREATE TABLE   [ "+strNewTopicSql+"] (  "+inQuery +"  ) " ; 

Спробуйте викинути квадратні дужки

Post's attachments

1.png 46.09 kb, 220 downloads since 2015-10-19 

Подякували: Lujok1

15

Re: SQL error or missing database (no such table: family)

fed_lviv написав:

Ось тут начебто все гуд:

rs = statement.executeQuery("SELECT * FROM " + tableName); 

Мене більш цікавить ось це:

 statmt = conn.createStatement();

Де продовження?

 statmt = conn.createStatement();
statmt .executeUpdate("CREATE TABLE..................");

Ви маєте на увазі метод який створює нову таблицю ?

16

Re: SQL error or missing database (no such table: family)

Так, мав на увазі, але дивіться повідомлення після.

17 Востаннє редагувалося fed_lviv (19.10.2015 20:55:37)

Re: SQL error or missing database (no such table: family)

У Вас таблиці family - нема, у Вас таблиця [ family]

Подякували: Lujok1

18

Re: SQL error or missing database (no such table: family)

fed_lviv написав:

У Вас таблиці family - нема, у Вас таблиця [ family]

Так викинув квадратні дужки , щось стало виходити .

Не всі колонки в новій таблиці зявляються але то вже мабудь інша проблема.
Дякую за допомогу. Як говорила моя бабушка :"не Бог а помог )))"