Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pochemy ne zapisuvat v BD?? problem with Access 
:(
    Опции темы
DEMO_VERSION
  Дата 17.10.2005, 13:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Problema v tom chto poslednij INSERT v funcuii addNewAttribute() ne vstavlyaet danue v tablicu. Vsegda imenno poslednij.

Kak vulechit'????

Ispolzyetsya Access.

Код

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

public class DataBase {

     Connection          connection;
     Statement           statement;
     ResultSet           resultSet;
     String[]            columnNames = {};
     ResultSetMetaData   metaData;
     
     PreparedStatement insertAttribute;
     PreparedStatement insertAddAtributeToClass;
     PreparedStatement insertValuesByNewAttribute;
        
     
     MyObject constants = new MyObject("Constants");
     
     private static DataBase db = null;
     private static String CANNOT_FIND_DRIVER = "Cannot find driver.";
     private static String CANNOT_CREATE_STATEMENT = "Cannont create the statement.";
     
     static final String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";

    public DataBase() {
         try {
             Class.forName(driverName);
             System.out.println("");

             connection = DriverManager.getConnection("jdbc:odbc:test");
             statement = connection.createStatement();
             
            try {
                insertAttribute= connection.prepareStatement("INSERT INTO Attributes VALUES(?,?,?,?)");
                insertAddAtributeToClass = connection.prepareStatement("INSERT INTO ClassAttributes(classRef,attrRef) VALUES(?,?)");
                insertValuesByNewAttribute = connection.prepareStatement("INSERT INTO ObjectValues VALUES(?,?,?)");
            } catch (SQLException e) {
                System.out.println(getConstantByName("classesPrepareStatement"));
                e.printStackTrace();
            }

         }
         catch (ClassNotFoundException ex) {
             System.out.println(CANNOT_FIND_DRIVER); 
             ex.printStackTrace();
         }
         catch (SQLException ex) {
          System.out.println(CANNOT_CREATE_STATEMENT);
          ex.printStackTrace();
         }
         db = this;
    }
    public static DataBase getInstance() {
            return db; 
    }
    public Connection getConnection() {
        return db.connection;
    }
    public Collection executeSearchSQL(String sql,String description) {
        Collection result = new ArrayList(); 
        try {
        Connection cConnection = db.getConnection();
        Statement sStatement = cConnection.createStatement();
        ResultSet rResult = sStatement.executeQuery(sql);
        metaData = rResult.getMetaData();
        int colCount = metaData.getColumnCount();
        while (rResult.next()) {
            MyObject object = new MyObject(description); 
            for (int i = 1; i < colCount+1; i++) {
                object.add( metaData.getColumnName(i), 
                        TypeIdent.getObjectWithType(metaData.getColumnType(i),i,rResult));
                }
            result.add(object);
        }
        sStatement.close();
        }
        catch (SQLException ex) {
            System.out.println(getConstantByName("dataBaseExecuteSearchSQL") + sql);
            ex.printStackTrace();
        }
        return result;
    }
    public synchronized  void insertDataByClass(String className,Collection data) {
        Collection result  = new ArrayList();
        try {
            Connection cConnection = getConnection();
            Statement sStatement = cConnection.createStatement();
        }
        catch (SQLException ex) {
            System.out.println(getConstantByName("dataBaseInsertDataByClass"));
            ex.printStackTrace();
        }
    }
    public int getMaxObjectID() {
        Integer result = new Integer(1);
        Collection resultCol = executeSearchSQL("SELECT Count(*) AS MaxObjectID FROM [Object];","Max");
        MyObject resultObj = (MyObject)resultCol.iterator().next();
        result = (Integer)(resultObj.get("MaxObjectID"));
        return result.intValue();
    }
    public int getAllAttributesCount() {
        Integer result = new Integer(1);
        Collection resultCol = executeSearchSQL("SELECT Count(*) AS MaxAttrID FROM [Attributes];","Max");
        MyObject resultObj = (MyObject)resultCol.iterator().next();
        result = (Integer)(resultObj.get("MaxAttrID"));
        return result.intValue();
    }
    public void deleteDataByID(int id) {
        
    }
    public void deleteDataByClassAndID(String className, int id) {
        
    }
    public void deleteDataByClass(String className) {
    }
    public void readCostantsByRow() {
        try {
        Connection cConnection = db.getConnection();
        Statement sStatement = cConnection.createStatement();
        ResultSet rResult = sStatement.executeQuery("SELECT * From constants");
        while (rResult.next()) {
            constants.add(rResult.getString(1),rResult.getString(2));
        }
        sStatement.close();
        }
        catch (SQLException ex) {
            System.out.println(getConstantByName("dataBaseReadConstantsByRow"));
            ex.printStackTrace();
        }
    }
    public String getConstantByName(String name) {
        Object result = constants.get(name);
        if (result!=null)
            return result.toString();
        else return "null";
    }
    
    public void finalize()  {
     try {
     if (statement!=null) {
       statement.close();
     }
        if (connection!=null) {
            connection.close();
        }
     } catch (SQLException ex) {
       System.out.println(getConstantByName("dataBaseFinalize"));
       ex.printStackTrace();
     }
    }
    public synchronized int executeInsertSQL(String sql) {
        int result = 0;
        Statement sStatement = null;
        try {
        Connection cConnection = getConnection();
        sStatement = cConnection.createStatement();
        result = sStatement.executeUpdate(sql);    
        }
        catch (SQLException ex) {
            System.out.println(getConstantByName("dataBaseExecuteSQL") + sql);
            result = 0;
            ex.printStackTrace();
        }
        finally {
            try {
            if (sStatement!=null) 
                sStatement.close();
            }catch (SQLException ex) {
                System.out.println(getConstantByName("dataBaseCloseException"));
                ex.printStackTrace();
            }
        }

        return result;
    }
    public synchronized int executeInsertSQL(PreparedStatement pStatement) {
        int result = 0;
        try {
        result = pStatement.executeUpdate();    
        }
        catch (SQLException ex) {
            System.out.println(getConstantByName("dataBaseExecuteSQL"));
            result = 0;
            ex.printStackTrace();
        }
        finally {
            try {
            if (pStatement!=null)
                pStatement.close();
            }catch (SQLException ex) {
                System.out.println(getConstantByName("dataBaseCloseException"));
                ex.printStackTrace();
            }
        }
        return result;
    }
    public boolean addNewAttribute(int classID,String attrName, String attrDescription, int attrType) {
        int attrID = getAllAttributesCount() + 1;
        int result = 0;
        try {
            insertAttribute.setInt(1,attrID);
            insertAttribute.setString(2,attrName);
            insertAttribute.setString(3,attrDescription);
            insertAttribute.setInt(4,attrType);
            result  = executeInsertSQL(insertAttribute);
            insertAddAtributeToClass.setInt(1,classID);
            insertAddAtributeToClass.setInt(2,attrID);
            result += executeInsertSQL(insertAddAtributeToClass);
            insertValuesByNewAttribute.setInt(1,100);
            insertValuesByNewAttribute.setInt(2,1000);
            insertValuesByNewAttribute.setString(3,"none");
            result += executeInsertSQL(insertValuesByNewAttribute);
            executeInsertSQL("INSERT INTO Log(log) VALUES('" + new Date().getHours() + ":" + new Date().getMinutes() +"')");

        }catch (SQLException ex) {
            System.out.println(getConstantByName("addNewAttributeException") + " classID="  + classID +  " attrName=" + attrName);
            ex.printStackTrace();
            }
        System.out.println("Inserted=" + result);
            return result!=0;
    }
}
 



  Вверх
DEMO_VERSION
Дата 17.10.2005, 14:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











I pochemy vot eto ne rabotaet?? Pishut osubka v sintaksise, no gde????? (Access)

objectRef - int
attrRef = int
value - string

setInt(1,
setString(2,
setInt(3,

Код


insertValuesByNewAttribute = connection.prepareStatement("INSERT INTO ObjectValues(objectRef, attrRef, value) (SELECT [Object].[ID],?,? From Object Where [Object].[classRef] = ?)");

  Вверх
DEMO_VERSION
Дата 17.10.2005, 14:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











INSERT INTO ObjectValues(objectRef, attrRef, [value])
SELECT Object.ID AS objectRef,100 AS attrRef,'NONNENOENO' as [value]
From Object Where [Object].[classRef] = 1

tak rabotaet
navernoe typoj Access, tyt nado stavit [ ]
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.