Adatbázis: SQL, XML DB

HSQLDB: a tábla nem marad meg

Üdv!

Elkezdtem egy hsqldb-s progit írni, de hamar belefutottam egy problémába. A program leteszteli, hogy létezik-e 2 tábla (egyszerűen futtat egy select-et). Ha nem, akkor létrehozza őket, és ismét teszteli (az utóbbit csak ideiglenesen). A probléma az, hogy indítás után megint nincs meg a tábla, de a második teszt mindig jelzi, hogy létrejött. Nem TEMP tábla, próbáltam MEMORY és CACHED módban is létrehozni, az sem segített rajta.


package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

	Connection conn = null;

	public Main() {
		super();
	}

	public void run() {
		try {
			Runtime.getRuntime().addShutdownHook(new ShutdownThread());

			Class.forName("org.hsqldb.jdbcDriver");
			conn = DriverManager.getConnection("jdbc:hsqldb:file:./database.db", "sa", "");
			conn.setAutoCommit(false);

			System.out.println("Connection Succeeded, testing database...");

			String[][] tests = new String[][] { 
					{ "currencies_sell", "SELECT curid, currency, time, value FROM currencies_sell;", // TOP 0 vagy LIMIT 0 esetén: Unexpected token: 0 in statement [0]
						"CREATE MEMORY TABLE currencies_sell " + 
							"( curid INTEGER IDENTITY, currency CHAR(3), time DATETIME, value INTEGER );" },
					{ "currencies_buy", "SELECT curid, currency, time, value FROM currencies_buy TOP 0;", 
						"CREATE CACHED TABLE currencies_buy " + 
							"( curid INTEGER IDENTITY, currency CHAR(3), time DATETIME, value INTEGER );" }
					};

			Statement stmt = null;
			ResultSet rs = null;

			for (int i = 0; i < tests.length; i++) {
				try {
					System.out.println("Testing table: " + tests[i][0]);
					stmt = conn.createStatement();
					rs = stmt.executeQuery(tests[i][1]);
					System.out.println("OK");
				} catch (SQLException e) {
					System.out.println("Table not found: " + tests[i][0] + ". Creating...");
					e.printStackTrace();

					Statement create = null;
					try {
						create = conn.createStatement();
						create.executeUpdate(tests[i][2]);
						System.out.println(tests[i][2]);
						System.out.println(tests[i][0] + " created.");
					} catch (SQLException ex) {
						System.out.println("Cannot create table. Exiting...");
						return;
					} finally {
						if (create != null)
							try {
								create.close();
							} catch (SQLException exx) {
							}
					}
				} finally {
					if (rs != null)
						try {
							stmt.close();
						} catch (SQLException e) {
						}
					if (stmt != null)
						try {
							stmt.close();
						} catch (SQLException e) {
						}
				}
			}
			
			for (int i = 0; i < tests.length; i++) {
				try {
					System.out.print("Testing table: " + tests[i][0] + ": ");
					stmt = conn.createStatement();
					rs = stmt.executeQuery(tests[i][1]);
					System.out.println("OK");
				} catch (SQLException e) {
					System.out.println("Table not found: " + tests[i][0] + ". Exception: ");
					e.printStackTrace();
				} finally {
					if (rs != null)
						try {
							stmt.close();
						} catch (SQLException e) {
						}
					if (stmt != null)
						try {
							stmt.close();
						} catch (SQLException e) {
						}
				}
			}

			System.out.println("DB check complete.");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {

		}
	}

	public static void main(String[] args) {
		new Main().run();
	}

	private class ShutdownThread extends Thread {
		@Override
		public void run() {
			System.out.println("Shutting down...");
			if (conn != null)
				try {
					conn.close();
					System.out.println("Database connection closed");
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
	}
}

Kimenet:


Connection Succeeded, testing database...
Testing table: currencies_sell
Table not found: currencies_sell. Creating...
java.sql.SQLException: Table not found in statement [SELECT curid, currency, time, value FROM currencies_sell]
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)
	at test.Main.run(Main.java:43)
	at test.Main.main(Main.java:113)
CREATE MEMORY TABLE currencies_sell ( curid INTEGER IDENTITY, currency CHAR(3), time DATETIME, value INTEGER );
currencies_sell created.
Testing table: currencies_buy
Table not found: currencies_buy. Creating...
java.sql.SQLException: Table not found in statement [SELECT curid, currency, time, value FROM currencies_buy]
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)
	at test.Main.run(Main.java:43)
	at test.Main.main(Main.java:113)
CREATE CACHED TABLE currencies_buy ( curid INTEGER IDENTITY, currency CHAR(3), time DATETIME, value INTEGER );
currencies_buy created.
Testing table: currencies_sell: OK
Testing table: currencies_buy: Table not found: currencies_buy. Exception: 
DB check complete.
Shutting down...
Database connection closed
java.sql.SQLException: Unexpected token: 0 in statement [0]
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.executeQuery(Unknown Source)
	at test.Main.run(Main.java:83)
	at test.Main.main(Main.java:113)

Ami még érdekes, hogy TOP 0 sem tetszik neki, pedig elméletileg oda lehetne rakni. Viszont azt nem értem, hogy ez mért csak a második tesztnél okoz neki problémát. Ha syntax hiba, mért nem jelzi az elsőnél (ki sem írja az első hibaüzenetben a TOP-ot.

hsqldb.org-ról elérhető 1.8.0_10-es verziót használom.

Oracle linux cliens

PHP alá akarnék oracle clienst tenni, de sajnos 8-as az oracle server, amihez a letölthető driver nem jó
valaki tudna küldeni vagy linket adni, ahonnan letölthető olyan verzió, ami a 8-as verzióhoz jó
OCI-val használnám

Kérdés tábla felépítésével kapcsolatban

Kisebb, beágyazott adatbázissal dolgozó programot próbálok összedobni, de elakadtam az egyik tábla felépítésénél. Tehát a feladat:
Adott 10 épület, ahol az ELMŰ negyedóránként rögzíti az aktuális fogyasztást (wattos, induktív és kapacitív). Ezeket az adatokat egy XML fájlban le lehet kérdezni a weblapjukról. Az adatok kinyerése már megvan, viszont a tárolást nem tudom, hogyan lenne célszerűbb megoldani?
A verziójú tábla:
HELY | DATUM | IDOPONT | TÍPUS | ERTEK
Ilyenkor egy sorban egy adott negyedórás érték lenne csak.

B verziójú tábla:
HELY | DATUM | TÍPUS | ERTEK1 | ERTEK2 | ERTEK3 .......
Ilyenkor egy sorban egy nap összes adata elérhető lenne (viszont ez 96 érték mezőt jelent).

Szóval, melyik lenne a jobb megoldás?

xpath elemkiválasztás

(a fórumtéma nem pont a legjobb de jobbat nem találtam)

Adott egy xml struktúra:

<elemek>
<elem></elem>
<elem></elem>
<elem></elem>
<elem><belso/></elem>
<elem></elem>
<elem></elem>
</elemek>

A kérdésem az, hogy hogyan lehet kiválasztani azt az <elem>-et aminek van egy <belso> child tag-e?

több havi forgalom statisztika 1 sorban

Sziasztok!

Szerintetek hogy célszerű megoldani a következő feladatot?

Adott 1 sql tábla amiből ki kell nyerni a havi össz forgalmat cikkekként és havi bontásban megjeleníteni egy sorban?

Tehát cikkszám, cikknév,1. havi össz forgalom, 2. havi össz forgalom stb.

Adatbázis motor MS SQL de most a koncepcióra lennék kíváncsi, szerintetek mi lenne célravezető?

phpmyadmin probléma?

Sziasztok!

Feltettem a gépemre egy phpmyadmint, és belépésnél a következő figyelmeztetés fogad:

nem tudtam betölteni a mcrypt kiterjesztést, ellenőrizd a PHP konfigurációt

Mit jelent ez? igen, nem tudta betölteni a mcrypt kiterjesztést, de ez mi célt szolgál, hátráltat e valamit?
nyilván a php confban van a baj, csak sajnos nem tudom mi, valaki esetleg?

mysql limit() hiba(?)

Sziasztok

Adott két mysql select-em:
Az első limit-jébe szeretném beágyazni a másodikat. A cél az lenne, hogy a kapott találatok 80%-át nézze csak át a fő select. Ezt a számod adná vissza a második, beágyazott select.
Önállóan mindkettő működik.

A limit így néz ki:
limit (select distinct round(count(id)*0.8) as elem
from munkalapok
...)

Erre ezt kapom:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(
select distinct round(count(id)*0.8) as elem
from munkalapok
where munkalap' at line 10

Mi okozza a hibát, ha alapból a limit select-je lefut önállóan és egy értékkel tér is vissza?

[MEGOLDVA] mysql remote connect error

Hali!
Mysql-hez tudok kapcsolodni konzolrol, phpmyadminban, tavolrol (grant all to user@'%' ....) Tehat a T. usernek minden joga megvan. Tud is kapcsolodni, de a
create table probaxx;
eredmenye:
ERROR 1142 (42000): CREATE command denied to user 'vursz2'@'x.x.x.x' for table 'probaxx'

Select ugyanez:
mysql> select * from test_tabla;
ERROR 1142 (42000): SELECT command denied to user 'vursz2'@'x.x.x.x' for table 'test_tabla'
mysql>

Mit rontok el?