简体   繁体   中英

Derby and SQL requests issue: how is the default schema determined?

I'm trying to use Derby in my school project but i have some issues. my DB is named theaterDB, derby 10.2.1, JDBC 3.0.0

Each SQL request i make through java does not succeed... I can't understand why. For example, the request: SELECT * FROM User returns an exception:

java.sql.SQLSyntaxErrorException: Schema 'ADMIN' does not exist

Another SQL that is not working :

ALTER table theaterDB."Projection" ADD INDEX(fk_Projection_Movie(Movie_id));

Syntax error: Encountered "" at line 1, column 45.

Here is the java :

public Connection getConnection()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            System.out.println("Connection to: jdbc:derby:C:\\Users\\acouty\\theaterDB;create=true");
            // DriverManager.get
            return DriverManager.getConnection("jdbc:derby:C:\\Users\\acouty\\theaterDB;create=true", "admin", "");
        }
        catch (final Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }
public List<User> listUsers()
    {
        final ArrayList<User> users = new ArrayList<User>();
        System.out.println("List user request");
        try
        {
            final Connection connection = getConnection();
            final String query = "SELECT * FROM User";
            System.out.println("query is : " + query);
            final ResultSet rs = connection.createStatement().executeQuery(query);
            while (rs.next())
            {
                System.out.println("salut");
            }
            return null;
        }
        catch (final Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

Here is the .sql :

CREATE TABLE theaterDB."Users" 
(
    id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
    name VARCHAR(45) NOT NULL,
    lastname VARCHAR(45) NOT NULL ,
    email VARCHAR(45) NOT NULL ,
    adress VARCHAR(45) NOT NULL ,
    city VARCHAR(45) NOT NULL ,
    zip VARCHAR(45) NOT NULL ,
    login VARCHAR(45) NOT NULL ,
    password VARCHAR(45) NOT NULL ,
    admin SMALLINT NOT NULL DEFAULT 0,
    PRIMARY KEY (id)
);

CREATE  TABLE theaterDB."Movie"
(
  id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
  title VARCHAR(45) NOT NULL ,
  resume VARCHAR(500) ,
  genre VARCHAR(60)  ,
  grade INT  ,
  review_pub VARCHAR(200) ,
  review_gen VARCHAR(200)  ,
  poster VARCHAR(100)  ,
  duration INT  ,
  release_date VARCHAR(45)  ,
  PRIMARY KEY (id) 
);

CREATE  TABLE theaterDB."Projection" (
  id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
  date DATE ,
  length INT ,
  Movie_id INT NOT NULL ,
  price DECIMAL(10,0) ,
  location VARCHAR(45) NOT NULL ,
  place_nbr INT NOT NULL ,
  PRIMARY KEY (id)
);

ALTER TABLE theaterDB."Projection" 
    ADD FOREIGN KEY(Movie_id) 
    REFERENCES theaterDB."Movie" (id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION;

CREATE TABLE  theaterDB."command" 
(
  id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
  Projection_id INT NOT NULL ,
  User_id INT NOT NULL ,
  paid SMALLINT NOT NULL ,
  PRIMARY KEY (id)
 );

 ALTER TABLE theaterDB."command" 
    ADD FOREIGN KEY(Projection_id) 
    REFERENCES theaterDB."Projection" (id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION;

 ALTER TABLE theaterDB."command" 
    ADD FOREIGN KEY(User_id) 
    REFERENCES theaterDB."Users" (id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION;

Thank you

I had to change executeQuery to execute and Users to "THEATERDB"."USERS"


Here are the working requests:

SELECT * FROM "THEATERDB"."Users"


insert into "THEATERDB"."Users"(NAME, LASTNAME, EMAIL, ADRESS, CITY, ZIP, LOGIN, PASSWORD, ADMIN) values ('salut', 'salut', 'salut', 'salut', 'salut', 'salut', 'salut', 'salut', 1)

Thanks for you help :).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM