Skip to content

Commit e4525fc

Browse files
author
BarbDev
committed
brace before the storm
1 parent 96e3dbe commit e4525fc

File tree

8 files changed

+301
-9
lines changed

8 files changed

+301
-9
lines changed

films.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
titre|duree|note|prix|date_sortie|genres|synopsis|acteurs
2-
Mr bean chez les fous|180|7.5|10.33|10-06-1994|comique|stewart little;Jpp
2+
Mr bean chez les fous|180|7.5|10.33|1994-10-10|comique|Le super synopsis, de fou|stewart little;Jpp

src/main/java/bdd/BaseDeDonnee.java

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package bdd;
22

3+
import org.h2.tools.Csv;
4+
35
import java.io.*;
46
import java.math.BigDecimal;
57
import java.sql.*;
@@ -20,7 +22,7 @@ public BaseDeDonnee() {
2022
* TODO : voir le chiffrement de la BDD (simple option normalement)
2123
*/
2224
bdd = DriverManager.getConnection("jdbc:h2:./test", "sa", "");
23-
createTables(null, null);
25+
//createTables(null, null);
2426

2527
} catch (SQLException e) {
2628
e.printStackTrace();
@@ -34,10 +36,10 @@ public void createTables(String csvFilm, String csvUser) {
3436
/* On vérifie que les tables ne sont pas déjà créés. */
3537
/* On crée les tables. */
3638
String films = "", users = "";
37-
if (csvFilm != null && csvUser != null) {
38-
films = "as select * from CSVREAD('"+csvFilm+"', null, 'rowseparator=|')";
39-
users = "as select * from CSVREAD('"+csvUser+"', null, 'rowseparator=|')";
40-
}
39+
/*if (csvFilm != null && csvUser != null) {
40+
films = "as select * from CSVREAD('"+csvFilm+"', null, 'fieldSeparator=|')";
41+
users = "as select * from CSVREAD('"+csvUser+"', null, 'fieldSeparator=|')";
42+
} */
4143

4244
try {
4345
Statement statement = bdd.createStatement();
@@ -314,6 +316,27 @@ public Utilisateur getUser(String pseudo, String pwd) {
314316
return user;
315317
}
316318

319+
public void addFromCSV(String path, String table) {
320+
try{
321+
Csv csv = new Csv();
322+
csv.setFieldSeparatorRead('|');
323+
csv.setCaseSensitiveColumnNames(true);
324+
ResultSet rs = csv.read(path, null, null);
325+
ResultSetMetaData meta = rs.getMetaData();
326+
while (rs.next()) {
327+
for (int i = 0; i < meta.getColumnCount(); i++) {
328+
System.out.println(
329+
meta.getColumnLabel(i + 1) + ": " +
330+
rs.getString(i + 1));
331+
}
332+
System.out.println();
333+
}
334+
rs.close();
335+
} catch (SQLException e) {
336+
e.printStackTrace();
337+
}
338+
}
339+
317340
public void deleteAll() {
318341
Statement statement = null;
319342
try {
@@ -324,11 +347,21 @@ public void deleteAll() {
324347
}
325348
}
326349

350+
public void execute(String action) {
351+
try {
352+
Statement statement = bdd.createStatement();
353+
statement.execute(action);
354+
statement.close();
355+
} catch (SQLException e) {
356+
e.printStackTrace();
357+
}
358+
}
359+
327360
static public void main(String[] args) {
328361
BaseDeDonnee baseDeDonnee = new BaseDeDonnee();
329-
baseDeDonnee.ajouter(new Film(1, "Mr Bean", 160, 7.8f, 20, new Date(Date.valueOf("1994-6-10").getTime()),
330-
"drole", "Mr bean par en vacs :D", new String[]{"Le magnifique", "lul"}));
331-
362+
//baseDeDonnee.ajouter(new Film(1, "Mr Bean", 160, 7.8f, 20, new Date(Date.valueOf("1994-6-10").getTime()),
363+
// "drole", "Mr bean par en vacs :D", new String[]{"Le magnifique", "lul"}));
364+
baseDeDonnee.createTables(null, null);
332365

333366
for (Film f : baseDeDonnee.getFilms())
334367
System.out.println(f);

src/main/java/bdd/CsvReader.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package bdd;
2+
3+
public interface CsvReader {
4+
void addFromCsv(String path);
5+
}

src/main/java/bdd/Table.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package bdd;
2+
3+
abstract class Table {
4+
private BaseDeDonnee bdd;
5+
6+
public Table(BaseDeDonnee bdd) {
7+
this.bdd = bdd;
8+
}
9+
10+
/**
11+
* Crée la table si elle n'existe pas.
12+
*/
13+
public void create() {
14+
StringBuilder stb = new StringBuilder("CREATE TABLE IF NOT EXISTS " + getName() + " (");
15+
String[] rows = getRows();
16+
for (int i = 0; i < rows.length; i++) {
17+
stb.append(rows[i]);
18+
if (i < rows.length)
19+
stb.append(",");
20+
}
21+
stb.append(");");
22+
bdd.execute(stb.toString());
23+
}
24+
25+
/**
26+
*
27+
* @return le nom de la table
28+
*/
29+
public abstract String getName();
30+
31+
/**
32+
* Permet d'avoir la liste des colonnes de la table avec leurs caractèristiques
33+
* @return liste des paramètres de chaque colonne
34+
*/
35+
protected abstract String[] getRows();
36+
37+
abstract void add();
38+
}

src/main/java/bdd/TableFilms.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package bdd;
2+
3+
public class TableFilms extends Table implements CsvReader {
4+
public TableFilms(BaseDeDonnee bdd) {
5+
super(bdd);
6+
}
7+
8+
@Override
9+
public void addFromCsv(String path) {
10+
11+
}
12+
13+
@Override
14+
public String getName() {
15+
return "films";
16+
}
17+
18+
@Override
19+
protected String[] getRows() {
20+
return new String[] {
21+
22+
};
23+
}
24+
25+
@Override
26+
void add() {
27+
28+
}
29+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package bdd;
2+
3+
public class TableUtilisateurs extends Table implements CsvReader {
4+
5+
public TableUtilisateurs(BaseDeDonnee bdd) {
6+
super(bdd);
7+
}
8+
9+
@Override
10+
public void addFromCsv(String path) {
11+
12+
}
13+
14+
@Override
15+
public String getName() {
16+
return "utilisateurs";
17+
}
18+
19+
@Override
20+
protected String[] getRows() {
21+
return new String[] {
22+
"id INT AUTO_INCREMENT (0, 1) PRIMARY KEY",
23+
"titre VARCHAR(255) NOT NULL UNIQUE",
24+
"duree SMALLINT NOT NULL",
25+
"note DECIMAL NOT NULL",
26+
"prix DECIMAL NOT NULL",
27+
"date_sortie DATE NOT NULL",
28+
"genres VARCHAR(15) NOT NULL",
29+
"synopsis VARCHAR(1500) NOT NULL",
30+
"acteurs VARCHAR(300) NOT NULL"
31+
};
32+
}
33+
34+
@Override
35+
void add() {
36+
37+
}
38+
}

test.mv.db

4 KB
Binary file not shown.

test.trace.db

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,152 @@ INSERT INTO films (titre,duree,note,prix,date_sortie,genres,synopsis,acteurs) va
9999
2018-02-02 14:20:02 jdbc[3]: exception
100100
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE IF NOT EXISTS UTILISATEURS (ID INT AUTO_INCREMENT (0, 1) PRIMARY KEY,NOM VARCHAR(35) NOT NULL,PRENOM VARCHAR(35) NOT NULL,PSEUDO VARCHAR(35) NOT NULL UNIQUE,EMAIL VARCHAR(35) NOT NULL UNIQUE,FILMS_LOUE VARCHAR(1000),SOLDE DECIMAL NOT NULL,ROLE VARCHAR(6) NOT NULLPWD[*] VARCHAR(256) NOT NULL) ; "; expected "NULL"; SQL statement:
101101
CREATE TABLE IF NOT EXISTS utilisateurs (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,nom VARCHAR(35) NOT NULL,prenom VARCHAR(35) NOT NULL,pseudo VARCHAR(35) NOT NULL UNIQUE,email VARCHAR(35) NOT NULL UNIQUE,films_loue VARCHAR(1000),solde DECIMAL NOT NULL,role VARCHAR(6) NOT NULLpwd VARCHAR(256) NOT NULL) ; [42001-196]
102+
2018-02-02 15:11:08 jdbc[3]: exception
103+
org.h2.jdbc.JdbcSQLException: Feature not supported: "rowseparator"; SQL statement:
104+
CREATE TABLE IF NOT EXISTS films (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,titre VARCHAR(255) NOT NULL UNIQUE,duree SMALLINT NOT NULL,note DECIMAL NOT NULL,prix DECIMAL NOT NULL,date_sortie DATE NOT NULL,genres VARCHAR(15) NOT NULL,synopsis VARCHAR(1500) NOT NULL,acteurs VARCHAR(300) NOT NULL) as select * from CSVREAD('./films.csv', null, 'rowseparator=|'); [50100-196]
105+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
106+
at org.h2.message.DbException.get(DbException.java:179)
107+
at org.h2.message.DbException.get(DbException.java:155)
108+
at org.h2.message.DbException.getUnsupportedException(DbException.java:216)
109+
at org.h2.tools.Csv.setOptions(Csv.java:867)
110+
at org.h2.expression.Function.getValueForColumnList(Function.java:2698)
111+
at org.h2.table.FunctionTable.<init>(FunctionTable.java:65)
112+
at org.h2.command.Parser.readTableFilter(Parser.java:1258)
113+
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
114+
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
115+
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
116+
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
117+
at org.h2.command.Parser.parseSelect(Parser.java:1743)
118+
at org.h2.command.Parser.parseCreateTable(Parser.java:6307)
119+
at org.h2.command.Parser.parseCreate(Parser.java:4351)
120+
at org.h2.command.Parser.parsePrepared(Parser.java:366)
121+
at org.h2.command.Parser.parse(Parser.java:321)
122+
at org.h2.command.Parser.parse(Parser.java:293)
123+
at org.h2.command.Parser.prepareCommand(Parser.java:258)
124+
at org.h2.engine.Session.prepareLocal(Session.java:578)
125+
at org.h2.engine.Session.prepareCommand(Session.java:519)
126+
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
127+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176)
128+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
129+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:45)
130+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
131+
2018-02-02 15:11:08 jdbc[3]: exception
132+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
133+
SELECT * FROM films [42102-196]
134+
2018-02-02 15:12:58 jdbc[3]: exception
135+
org.h2.jdbc.JdbcSQLException: Feature not supported: "rowSeparator"; SQL statement:
136+
CREATE TABLE IF NOT EXISTS films (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,titre VARCHAR(255) NOT NULL UNIQUE,duree SMALLINT NOT NULL,note DECIMAL NOT NULL,prix DECIMAL NOT NULL,date_sortie DATE NOT NULL,genres VARCHAR(15) NOT NULL,synopsis VARCHAR(1500) NOT NULL,acteurs VARCHAR(300) NOT NULL) as select * from CSVREAD('./films.csv', null, 'rowSeparator=|'); [50100-196]
137+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
138+
at org.h2.message.DbException.get(DbException.java:179)
139+
at org.h2.message.DbException.get(DbException.java:155)
140+
at org.h2.message.DbException.getUnsupportedException(DbException.java:216)
141+
at org.h2.tools.Csv.setOptions(Csv.java:867)
142+
at org.h2.expression.Function.getValueForColumnList(Function.java:2698)
143+
at org.h2.table.FunctionTable.<init>(FunctionTable.java:65)
144+
at org.h2.command.Parser.readTableFilter(Parser.java:1258)
145+
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
146+
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
147+
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
148+
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
149+
at org.h2.command.Parser.parseSelect(Parser.java:1743)
150+
at org.h2.command.Parser.parseCreateTable(Parser.java:6307)
151+
at org.h2.command.Parser.parseCreate(Parser.java:4351)
152+
at org.h2.command.Parser.parsePrepared(Parser.java:366)
153+
at org.h2.command.Parser.parse(Parser.java:321)
154+
at org.h2.command.Parser.parse(Parser.java:293)
155+
at org.h2.command.Parser.prepareCommand(Parser.java:258)
156+
at org.h2.engine.Session.prepareLocal(Session.java:578)
157+
at org.h2.engine.Session.prepareCommand(Session.java:519)
158+
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
159+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:176)
160+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
161+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:45)
162+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
163+
2018-02-02 15:12:58 jdbc[3]: exception
164+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
165+
SELECT * FROM films [42102-196]
166+
2018-02-02 15:14:26 jdbc[3]: exception
167+
org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement:
168+
CREATE TABLE IF NOT EXISTS films (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,titre VARCHAR(255) NOT NULL UNIQUE,duree SMALLINT NOT NULL,note DECIMAL NOT NULL,prix DECIMAL NOT NULL,date_sortie DATE NOT NULL,genres VARCHAR(15) NOT NULL,synopsis VARCHAR(1500) NOT NULL,acteurs VARCHAR(300) NOT NULL) as select * from CSVREAD('./films.csv', null, 'fieldSeparator=|'); [21002-196]
169+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
170+
at org.h2.message.DbException.get(DbException.java:179)
171+
at org.h2.message.DbException.get(DbException.java:155)
172+
at org.h2.message.DbException.get(DbException.java:144)
173+
at org.h2.command.ddl.CreateTable.update(CreateTable.java:124)
174+
at org.h2.command.CommandContainer.update(CommandContainer.java:101)
175+
at org.h2.command.Command.executeUpdate(Command.java:260)
176+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:192)
177+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
178+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:45)
179+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
180+
2018-02-02 15:14:26 jdbc[3]: exception
181+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
182+
SELECT * FROM films [42102-196]
183+
2018-02-02 15:16:01 jdbc[3]: exception
184+
org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement:
185+
CREATE TABLE IF NOT EXISTS films (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,titre VARCHAR(255) NOT NULL UNIQUE,duree SMALLINT NOT NULL,note DECIMAL NOT NULL,prix DECIMAL NOT NULL,date_sortie DATE NOT NULL,genres VARCHAR(15) NOT NULL,synopsis VARCHAR(1500) NOT NULL,acteurs VARCHAR(300) NOT NULL) as select * from CSVREAD('./films.csv', null, 'fieldSeparator=|'); [21002-196]
186+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
187+
at org.h2.message.DbException.get(DbException.java:179)
188+
at org.h2.message.DbException.get(DbException.java:155)
189+
at org.h2.message.DbException.get(DbException.java:144)
190+
at org.h2.command.ddl.CreateTable.update(CreateTable.java:124)
191+
at org.h2.command.CommandContainer.update(CommandContainer.java:101)
192+
at org.h2.command.Command.executeUpdate(Command.java:260)
193+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:192)
194+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
195+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:45)
196+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
197+
2018-02-02 15:16:01 jdbc[3]: exception
198+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
199+
SELECT * FROM films [42102-196]
200+
2018-02-02 15:25:06 jdbc[3]: exception
201+
org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement:
202+
CREATE TABLE IF NOT EXISTS films (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,titre VARCHAR(255) NOT NULL UNIQUE,duree SMALLINT NOT NULL,note DECIMAL NOT NULL,prix DECIMAL NOT NULL,date_sortie DATE NOT NULL,genres VARCHAR(15) NOT NULL,synopsis VARCHAR(1500) NOT NULL,acteurs VARCHAR(300) NOT NULL) as select * from CSVREAD('./films.csv', null, 'fieldSeparator=|'); [21002-196]
203+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
204+
at org.h2.message.DbException.get(DbException.java:179)
205+
at org.h2.message.DbException.get(DbException.java:155)
206+
at org.h2.message.DbException.get(DbException.java:144)
207+
at org.h2.command.ddl.CreateTable.update(CreateTable.java:124)
208+
at org.h2.command.CommandContainer.update(CommandContainer.java:101)
209+
at org.h2.command.Command.executeUpdate(Command.java:260)
210+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:192)
211+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
212+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:45)
213+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
214+
2018-02-02 15:25:06 jdbc[3]: exception
215+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
216+
SELECT * FROM films [42102-196]
217+
2018-02-02 15:25:33 jdbc[3]: exception
218+
org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement:
219+
CREATE TABLE IF NOT EXISTS films (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,titre VARCHAR(255) NOT NULL UNIQUE,duree SMALLINT NOT NULL,note DECIMAL NOT NULL,prix DECIMAL NOT NULL,date_sortie DATE NOT NULL,genres VARCHAR(15) NOT NULL,synopsis VARCHAR(1500) NOT NULL,acteurs VARCHAR(300) NOT NULL) as select * from CSVREAD('./films.csv', null, 'fieldSeparator=|'); [21002-196]
220+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
221+
at org.h2.message.DbException.get(DbException.java:179)
222+
at org.h2.message.DbException.get(DbException.java:155)
223+
at org.h2.message.DbException.get(DbException.java:144)
224+
at org.h2.command.ddl.CreateTable.update(CreateTable.java:124)
225+
at org.h2.command.CommandContainer.update(CommandContainer.java:101)
226+
at org.h2.command.Command.executeUpdate(Command.java:260)
227+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:192)
228+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
229+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:45)
230+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
231+
2018-02-02 15:25:33 jdbc[3]: exception
232+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
233+
SELECT * FROM films [42102-196]
234+
2018-02-02 15:26:35 jdbc[3]: exception
235+
org.h2.jdbc.JdbcSQLException: Column count does not match; SQL statement:
236+
CREATE TABLE IF NOT EXISTS utilisateurs (id INT AUTO_INCREMENT (0, 1) PRIMARY KEY,nom VARCHAR(35) NOT NULL,prenom VARCHAR(35) NOT NULL,pseudo VARCHAR(35) NOT NULL UNIQUE,email VARCHAR(35) NOT NULL UNIQUE,films_loue VARCHAR(1000),solde DECIMAL NOT NULL,role VARCHAR(6) NOT NULL,pwd VARCHAR(256) NOT NULL) as select * from CSVREAD('./users.csv', null, 'fieldSeparator=|'); [21002-196]
237+
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
238+
at org.h2.message.DbException.get(DbException.java:179)
239+
at org.h2.message.DbException.get(DbException.java:155)
240+
at org.h2.message.DbException.get(DbException.java:144)
241+
at org.h2.command.ddl.CreateTable.update(CreateTable.java:124)
242+
at org.h2.command.CommandContainer.update(CommandContainer.java:101)
243+
at org.h2.command.Command.executeUpdate(Command.java:260)
244+
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:192)
245+
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:164)
246+
at bdd.BaseDeDonnee.createTables(BaseDeDonnee.java:56)
247+
at bdd.BaseDeDonnee.main(BaseDeDonnee.java:331)
248+
2018-02-02 15:26:35 jdbc[3]: exception
249+
org.h2.jdbc.JdbcSQLException: Table "FILMS" not found; SQL statement:
250+
SELECT * FROM films [42102-196]

0 commit comments

Comments
 (0)