this.project = project;
this.DBTYPE = this.project.get_string_member("DBTYPE");
this.DBNAME = this.project.get_string_member("DBNAME");
+ if (this.DBTYPE.length < 1) {
+ return;
+ }
+
+
try {
this.cnc = Gda.Connection.open_from_string (
Gda.ConnectionOptions.NONE
);
} catch(Gda.ConfigError e) {
- print("%s\n", e.message);
+ GLib.warning("%s\n", e.message);
this.cnc = null;
this.DBTYPE = "";
} catch(Gda.ConnectionError e) {
- print("%s\n", e.message);
+ GLib.warning("%s\n", e.message);
this.cnc = null;
this.DBTYPE = "";
}
public Json.Array readTables()
{
-
- if (this.DBTYPE == "PostgreSQL") {
+ try {
+ if (this.DBTYPE == "PostgreSQL") {
- return this.fetchAll(this.cnc.execute_select_command(
- """select c.relname FROM pg_catalog.pg_class c
- LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
- WHERE c.relkind IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
- AND pg_catalog.pg_table_is_visible(c.oid)
- """));
+ return this.fetchAll(this.cnc.execute_select_command(
+ """select c.relname FROM pg_catalog.pg_class c
+ LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
+ WHERE c.relkind IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
+ AND pg_catalog.pg_table_is_visible(c.oid)
+ """));
+ }
+ if (this.DBTYPE == "MySQL") {
+ return this.fetchAll(this.cnc.execute_select_command( "SHOW TABLES" ));
+ }
+ } catch (GLib.Error e) {
}
- if (this.DBTYPE == "MySQL") {
- return this.fetchAll(this.cnc.execute_select_command( "SHOW TABLES" ));
- }
- print("Read tables failed DBTYPE = %s\n", this.DBTYPE);
+ GLib.warning("Read tables failed DBTYPE = %s\n", this.DBTYPE);
return new Json.Array();
}
public Json.Object readTable(string tablename)
{
- Json.Array res_ar;
+ Json.Array res_ar = new Json.Array();
var res = new Json.Object();
-
- switch (this.DBTYPE ) {
- case "PostgreSQL":
+ try {
+ switch (this.DBTYPE ) {
+ case "PostgreSQL":
- res_ar = this.fetchAll(this.cnc.execute_select_command(
- """
+ res_ar = this.fetchAll(this.cnc.execute_select_command(
+ """
- SELECT
- f.attnum AS number,
- f.attname AS Field,
- f.attnum,
- CASE WHEN f.attnotnull = 't' THEN 'NO' ELSE 'YES' END AS isNull,
- pg_catalog.format_type(f.atttypid,f.atttypmod) AS Type,
- CASE WHEN p.contype = 'p' THEN 't' ELSE 'f' END AS primarykey,
- CASE WHEN p.contype = 'u' THEN 't' ELSE 'f' END AS uniquekey,
- CASE WHEN p.contype = 'f' THEN g.relname END AS foreignkey,
- CASE WHEN p.contype = 'f' THEN p.confkey END AS foreignkey_fieldnum,
- CASE WHEN p.contype = 'f' THEN g.relname END AS foreignkey,
- CASE WHEN p.contype = 'f' THEN p.conkey END AS foreignkey_connnum,
- CASE WHEN f.atthasdef = 't' THEN d.adsrc END AS default
- FROM pg_attribute f JOIN pg_class c ON c.oid = f.attrelid
- JOIN pg_type t ON t.oid = f.atttypid
- LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum
- LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
- LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY ( p.conkey )
- LEFT JOIN pg_class AS g ON p.confrelid = g.oid
- WHERE c.relkind = 'r'::char AND n.nspname = 'public'
- AND c.relname = '""" + tablename + """' AND f.attnum > 0 ORDER BY number;
+ SELECT
+ f.attnum AS number,
+ f.attname AS Field,
+ f.attnum,
+ CASE WHEN f.attnotnull = 't' THEN 'NO' ELSE 'YES' END AS isNull,
+ pg_catalog.format_type(f.atttypid,f.atttypmod) AS Type,
+ CASE WHEN p.contype = 'p' THEN 't' ELSE 'f' END AS primarykey,
+ CASE WHEN p.contype = 'u' THEN 't' ELSE 'f' END AS uniquekey,
+ CASE WHEN p.contype = 'f' THEN g.relname END AS foreignkey,
+ CASE WHEN p.contype = 'f' THEN p.confkey END AS foreignkey_fieldnum,
+ CASE WHEN p.contype = 'f' THEN g.relname END AS foreignkey,
+ CASE WHEN p.contype = 'f' THEN p.conkey END AS foreignkey_connnum,
+ CASE WHEN f.atthasdef = 't' THEN d.adsrc END AS default
+ FROM pg_attribute f JOIN pg_class c ON c.oid = f.attrelid
+ JOIN pg_type t ON t.oid = f.atttypid
+ LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum
+ LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
+ LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY ( p.conkey )
+ LEFT JOIN pg_class AS g ON p.confrelid = g.oid
+ WHERE c.relkind = 'r'::char AND n.nspname = 'public'
+ AND c.relname = '""" + tablename + """' AND f.attnum > 0 ORDER BY number;
- """));
- break;
+ """));
+ break;
- case "MySQL":
- res_ar = this.fetchAll(this.cnc.execute_select_command( "DESCRIBE " + tablename ));
- break;
+ case "MySQL":
+ res_ar = this.fetchAll(this.cnc.execute_select_command( "DESCRIBE " + tablename ));
+ break;
- default:
- return res;
- break;
- }
+ default:
+ return res;
+
+ }
+ } catch (GLib.Error e) {
+ return res;
+ }
for (var i =0; i < res_ar.get_length(); i++) {
var el = res_ar.get_object_element(i);
TABLE_SCHEMA = '""" + this.DBNAME + """'
""";
- var jarr = this.fetchAll(this.cnc.execute_select_command(
- query
- ));
- if (jarr.get_length() < 1) {
- return ret;
- }
-
+ var jarr = new Json.Array();
+ try {
+ jarr = this.fetchAll(this.cnc.execute_select_command(
+ query
+ ));
+ if (jarr.get_length() < 1) {
+ return ret;
+ }
+ } catch (GLib.Error e) {
+ return ret;
+ }
var contents = jarr.get_string_element(0);
+ GLib.debug(contents);
+ if (contents == null) {
+ return ret;
+ }
GLib.Regex exp = /FK\(([^\)]+)\)/;
string str = "";
- try {
- GLib.MatchInfo mi;
- if ( exp.match (contents, 0, out mi) ) {
-
- str = mi.fetch(1);
- print("match = %s", str);
- }
- } catch (GLib.Error e) {
- return ret;
+
+ GLib.MatchInfo mi;
+ if ( exp.match (contents, 0, out mi) ) {
+
+ str = mi.fetch(1);
+ GLib.debug("match = %s", str);
}
+
var ar = str.split("\n");
for (var i = 0; i < ar.length; i++) {
var kv = ar[i].split("=");
cols.add(qnr.get_column_name(i));
}
//print(Json.stringify(cols, null,4));
- var iter = qnr.create_iter();
+
var res = new Json.Array();
//print("ROWS %d\n", qnr.get_n_rows());
//print("GOT ROW");
//print("COLS %d\n", cols.size);
if (cols.size == 1) {
- var str = qnr.get_value_at(0,r).get_string();
+
//print("GOT %s\n",str);
- res.add_string_element(qnr.get_value_at(0,r).get_string());
+ try {
+ res.add_string_element(qnr.get_value_at(0,r).get_string());
+ } catch (GLib.Error e) {
+ res.add_string_element("");
+ }
continue;
}
for (var i = 0; i < cols.size; i++) {
var n = cols.get(i);
- var val = qnr.get_value_at(i,r);
- var type = val.type().name();
- //print("%s\n",type);
- switch(type) {
- case "GdaBinary":
- case "GdaBlob":
- add.set_string_member(n, "?? big string ??");
- break;
+ try {
+ var val = qnr.get_value_at(i,r);
+ var type = val.type().name();
+ //print("%s\n",type);
+ switch(type) {
+ case "GdaBinary":
+ case "GdaBlob":
+ add.set_string_member(n, "?? big string ??");
+ break;
- case "GdaNull":
- add.set_null_member(n);
- break;
+ case "GdaNull":
+ add.set_null_member(n);
+ break;
- default:
- add.set_string_member(n, val.get_string());
- break;
+ default:
+ add.set_string_member(n, val.get_string());
+ break;
+ }
+ } catch (GLib.Error e ) {
+ add.set_string_member(n, "");
}
}