Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][H2] Funkcja łączenia z bazą
Forum PHP.pl > Forum > Przedszkole
rafalkml
Witam!
Mam pytanie do Was forumowicze.
Pracował ktoś kiedyś z bazą danych H2?

Potrzebuje pomocy odnośnie stworzenia funkcji, która łączy z bazą H2. Jeśli było to możliwe to też skonfigurowanie Apache Tomcat do łączenia z bazą H2.

W sieci znalazłem tylko takie kody:

Klasa baza danych:
  1. class BazaDanych{
  2.  
  3. var $Id; /// Id łącze z bazą danych
  4.  
  5. function BazaDanych(){
  6. // Nawiązanie połączenia z bazą danych
  7. // Przykłąd dla bazy danych H2
  8. $this->ID=new PDO("java:comp/env/testDB");
  9. }
  10. function wykonajZapytanie($zapytanie){
  11. $this->ID->exec($zapytanie);
  12. }
  13. function pobierzTabliceWynikow($zapytanie){
  14. return $this->ID->query($zapytanie);
  15. }
  16. }//Koniec klasy BazaDanych


Dodanie do $CATALINA_HOME/conf/context.xml
  1. <Resource
  2. name="testDB"
  3. auth="Container"
  4. type="javax.sql.DataSource"
  5. url="jdbc:h2:tcp://localhost/~/test"
  6. driverClassName="org.h2.Driver"
  7. username="sa"
  8. password="" />


Mógłby to prosto wyjaśnić, jak to funkcjonuje?

Z góry dziękuję za odpowiedzi.
doop
odświeżam temat, potrzebuję pomocy odnośnie tego
zbig
Witam!

Z tego co wiem to nie ma bezposredniej mozliwosci polaczenia sie PHP z H2 (chyba ze cos sie pojawilo) .
Poniewaz H2 jest relacyjnym systemem zarządzania bazami danych napisany w Javie, dlatego proponuje uzycie Java Bridge.
H2 mozna uzywac w relacji klient/server, albo dolaczyc jako paczke (*.jar) do aplikacji Java.

Jezeli chcesz polaczyc Tomcata ( aplikacje J2EE ) z baza, najnormalniej w swiecie tworzysz polaczenie

Kod
//Kod Java z Tutoriala na stronie http://www.h2database.com

import java.sql.*;
public class Test {
    public static void main(String[] a)
            throws Exception {
        Class.forName("org.h2.Driver");
        Connection conn = DriverManager.
            getConnection("jdbc:h2:~/test", "sa", "");
        // add application code here
        conn.close();
    }
}


albo uzyc typowego dla JAVA sposobu definiowania danych polaczenia ( web.xml , properties etc. ).

Ale tak czy inaczej jest to JAVA nie PHP.
Na moj chlopski rozum pozostaje Java Bridge.

Pozdrawiam

doop
Cytat
Use the Quercus implementation of PHP - this is a pure Java implementation
of PHP that allows you to integrate JDBC data sources easily.


znalazłem taką informację w sieci, potwierdza ona to co mówił mój wykładowca, tylko, że nigdzie nie jest napisane w jaki sposób realizować to połączenie, albo inaczej w jaki sposób stworzyć bazę i gdzie trzeba ją umieścić

mam zrobić projekt php + h2, tutaj masz adres do strony mojego wykładowcy: http://www.users.pjwstk.edu.pl/~denisjuk/t...adania/php.html

jakbyś miał chwilę czasu i mógł do tego zerknąć, może zrozumiesz coś więcej niż ja ;/
zbig
Witam!

Wiem o co chodzi Twojemu wykladowcy. Nie wiem talko co on pali biggrin.gif .
Quercus to technologia, ktora pozwala mieszac PHP i JAVA na serverach aplikacji JAVY.
Umieszczenie aplikacji php na serverze JAVY jest dla osob majacych niewielkie doswiadczenie z technologia J2EE i JNDI wyzwaniem na miare podboju kosmosu biggrin.gif.

Ale w gruncie rzeczy jest to wraper JAVY, w ktorym mozna uzywac php . Co mam na mysli.
  1. <?php
  2. // Taki maly przykladzik z Netu
  3. import java.util.HashMap;
  4.  
  5. $map = new HashMap();
  6.  
  7. $map->put(&#8216;california’, 1000);
  8. $map->put(&#8216;oregon’, 1200);
  9. ?>


Rozumiesz ? Piszesz w php, ale uzywasz klas i metod JAVA. Nie chce porownywac tego z JavaBridge, ale w gruncie rzeczy jest to podobne.
Dlatego konstrukt typu

  1. <?
  2. $db = new PDO("java:comp/env/jdbc/my-database");
  3.  
  4. ?>


jest jak najbardziej poprawny. Wywolujesz tu klase javy new PDO, ktora pobiera argument w postacie adresu JNDI do bazy na serverze.

Pozdrawiam i wspolczuje gory lektur i pracy, jaka jest przed Toba.

doop
przy próbie wywołania dostaje coś takiego: E:\apache-tomcat\apache-tomcat-7.0.11\webapps\homepage\db.php:10: Fatal Error: 'java:comp/env/jdbc/test' is an unknown PDO JNDI data source.

co to może oznaczać?

ps masz może jakiś komunikator, na którym moglibyśmy się szybciej porozumiewać?
zbig
Witam !

Sorry za to ze nie podaje zadnego komunikatora, ale nie mam czasu na taki hotline.

Po pierwsze zdefiniuj w CATALINA_HOME/conf/context.xml dane bazy
  1. <Resource
  2. name="testDB"
  3. auth="Container"
  4. type="javax.sql.DataSource"
  5. url="jdbc:h2:tcp://localhost/~/test"
  6. driverClassName="org.h2.Driver"
  7. username="sa"
  8. password="" />
  9.  


testDB to jest nazwa resource dla JNDI
czyli odwolujesz sie

  1. new PDO("java:comp/env/jdbc/testDB");


Wazna sprawa do wrzucenie do glownej Library Tomcata dystrybucji H2 (h2*.jar ) i na wszelki wypadek javax.sql.* ( ale to powinno byc w JAVA 1.5 1.6 jako standart).
Po restarcie Tomcata zostanie utworzona baza "test"

i to wszystko.

Wiecej Ci pomoc nie moge, bo to wymagaloby juz zrobienie tego za Ciebie, a tak poza tym wiecej info znajdziesz na forach JAVA.
Ale mysle ze jak troche pogooglujesz wszystko okaze sie do zrobienia.

Pozdrawiam

[edit]

Jeszcze jedno : jezeli nie pojdzie ci z Resource name="testDB" sprobuj Resource name="jdbc/testDB"
Gość
Cytat
[edit]

Jeszcze jedno : jezeli nie pojdzie ci z Resource name="testDB" sprobuj Resource name="jdbc/testDB"


Twój edit uratował mi życie ;P dziękuję !
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.