浏览代码

db.databases: module now working for SQLite and PostgreSQL driver
manual extended


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@53598 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa 12 年之前
父节点
当前提交
0f90e55595
共有 2 个文件被更改,包括 64 次插入25 次删除
  1. 41 6
      db/db.databases/db.databases.html
  2. 23 19
      db/db.databases/main.c

+ 41 - 6
db/db.databases/db.databases.html

@@ -1,7 +1,37 @@
 <h2>DESCRIPTION</h2>
 
-<em>db.databases</em> lists all databases for a given driver. Supported drivers
-are dbf, shp, odbc and pg.
+<em>db.databases</em> lists all databases for a given <b>driver</b>
+and optionally <b>location</b>. 
+
+<h2>NOTES</h2>
+
+Currently supported database drivers are
+<em><a href="grass-sqlite.html">SQLite</a></em>, <em><a href="grass-pg.html">PostgreSQL</a></em>,
+and <em><a href="grass-odbc.html">ODBC</a></em>.
+
+<p>
+Default <b>location</b> for SQLite driver is the full path for the
+current mapset. For PostgreSQL driver it's empty connection string.
+
+<h2>EXAMPLES</h2>
+
+List SQLite databases in the current mapset:
+
+<div class="code"><pre>
+db.databases driver=sqlite
+</pre></div>
+
+List SQLite databases in the given directory:
+
+<div class="code"><pre>
+db.databases driver=sqlite location=/opt/sqlite
+</pre></div>
+
+List PostgreSQL databases from database server running on given port:
+
+<div class="code"><pre>
+db.databases driver=pg location="host=server_name port=5333"
+</pre></div>
 
 <h2>SEE ALSO</h2>
 
@@ -10,11 +40,16 @@ are dbf, shp, odbc and pg.
 <a href="db.drivers.html">db.drivers</a>,
 <a href="db.execute.html">db.execute</a>,
 <a href="db.login.html">db.login</a>,
-<a href="db.tables.html">db.tables</a>,
-<a href="sql.html">GRASS SQL interface</a></em>
+<a href="db.tables.html">db.tables</a>
+</em>
+
+<p>
+<a href="sql.html">GRASS SQL interface</a>
 
 <h2>AUTHOR</h2>
 
-Radim Blazek, ITC-Irst, Trento, Italy
+Radim Blazek, ITC-Irst, Trento, Italy<br>
+Updated for GRASS 7 by Martin Landa, Czech Technical University in Prague, Czech Republic
 
-<p><i>Last changed: $Date$</i>
+<p>
+<i>Last changed: $Date$</i>

+ 23 - 19
db/db.databases/main.c

@@ -5,11 +5,11 @@
  * AUTHOR(S):    Radim Blazek <radim.blazek gmail.com> (original contributor)
  *               Glynn Clements <glynn gclements.plus.com>, Markus Neteler <neteler itc.it>
  * PURPOSE:      lists all databases for a given driver
- * COPYRIGHT:    (C) 2002-2006 by the GRASS Development Team
+ * COPYRIGHT:    (C) 2002-2006, 2012 by the GRASS Development Team
  *
- *               This program is free software under the GNU General Public
- *               License (>=v2). Read the file COPYING that comes with GRASS
- *               for details.
+ *               This program is free software under the GNU General
+ *               Public License (>=v2). Read the file COPYING that
+ *               comes with GRASS for details.
  *
  *****************************************************************************/
 
@@ -18,18 +18,15 @@
 #include <grass/gis.h>
 #include <grass/glocale.h>
 
-
 struct
 {
     char *driver;
     char *location;
 } parms;
 
-
 /* function prototypes */
 static void parse_command_line(int, char **);
 
-
 int main(int argc, char **argv)
 {
     dbDriver *driver;
@@ -50,17 +47,19 @@ int main(int argc, char **argv)
     if (driver == NULL)
 	G_fatal_error(_("Unable to start driver <%s>"), parms.driver);
 
-    if (db_list_databases(driver, &locations, nlocs, &handles, &count) !=
-	DB_OK)
-	G_fatal_error(_("Unable to list databases"));
-
+    if (db_list_databases(driver, &locations,
+                          nlocs, &handles, &count) != DB_OK)
+        G_fatal_error(_("Unable to list databases"));
+    
     db_shutdown_driver(driver);
 
     for (i = 0; i < count; i++) {
-	fprintf(stdout, "%s", db_get_handle_dbname(&handles[i]));
-	fprintf(stdout, "\n");
+	fprintf(stdout, "%s\n", db_get_handle_dbname(&handles[i]));
     }
 
+    if (count < 1)
+        G_important_message(_("No databases found"));
+                            
     exit(EXIT_SUCCESS);
 }
 
@@ -75,14 +74,19 @@ static void parse_command_line(int argc, char **argv)
 
     driver = G_define_standard_option(G_OPT_DB_DRIVER);
     driver->options = db_list_drivers();
-
+    driver->answer = (char *) db_get_default_driver_name();
+    driver->guisection = _("Connection");
+    
     location = G_define_option();
     location->key = "location";
     location->type = TYPE_STRING;
     location->required = NO;
-    location->multiple = YES;
-    location->description = _("Location name");
-
+    /* location->multiple = YES; ? */
+    location->label = _("Location");
+    location->description = _("Path for SQLite driver, or connection string "
+                              "for PostgreSQL driver");
+    location->key_desc = "name";
+    location->guisection = _("Connection");
 
     /* Set description */
     module = G_define_module();
@@ -90,11 +94,11 @@ static void parse_command_line(int argc, char **argv)
     G_add_keyword(_("attribute table"));
     G_add_keyword(_("SQL"));
     module->description =
-	_("List all databases for a given driver and location.");
+	_("Lists all databases for a given driver and location.");
 
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
 
     parms.driver = driver->answer;
-    parms.location = location->answer;
+    parms.location = location->answer ? location->answer : "";
 }