sql statement
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 1074
SQL::Statement::Embed 1.15
SQL::Statement::Embed can embed a SQL engine in a DBD or module. more>>
SQL::Statement::Embed can embed a SQL engine in a DBD or module.
SQL::Statement is designed to be easy to embed in other modules and to be especially easy to embed in DBI drivers. It provides a SQL Engine and the other module needs to then provide a data source and a storage mechanism. For example, the DBD::CSV module uses SQL::Statement as an embedded SQL engine by implementing a file-based data source and by using DBI as the user interface. Similarly DBD::Amazon uses SQL::Statement as its SQL engine, provides its own extensions to the supported SQL syntax, and uses on-the-fly searches of Amazon.com as its data source.
SQL::Statement is the basis for eight existing DBDs (DBI database drivers). If you have a new data source, you too can create a DBD without having to reinvent the SQL wheel. Its fun, its easy, become a DBD author today!
SQL::Statement can be also be embedded without DBI. Well explore that first since developing a DBD uses most of the same methods and techniques.
The role of SQL::Statement subclasses
SQL::Statement provides a SQL parsing and execution engine. It does not provide a data source or storage mechanism other than in-memory tables. The DBD::File module is a subclass of SQL::Statement that provides access to file-based storage mechanisms. Its quite possible to use things other than files as data souces, in which case we wouldnt use DBD::File, instead wed replace DBD::Files methods with our own. In the examples below, well use DBD::File, replacing only a few methods.
SQL::Statement provides SQL parsing and evaluation and DBD::File provides file-based storage. The only thing missing is a data source - what we actually want to store and query. As an example suppose we are going to create a subclass called Foo that will provide as a data source a simple file similar to a passwd file - one record per line, fields separated by colons, with only three fields "username, uid, gid".
Consider what needs to happen to perform a SELECT query on our Foo data:
* recieve a SQL string
* parse the SQL string into a request structure
* open the table(s) specified in the request
* define column names and postions for the table
* read rows from the table
* convert the rows from colon-separated format into perl arrays
* match the columns and rows against the requested selection criteria
* return requested rows and columns to the user
To perform operations like INSERT and DELETE, we also need to:
* convert rows from perl arrays into colon-separated format
* write rows
* delete rows
SQL::Statement takes care of all of the SQL parsing and evaluation. DBD::File takes care of file opening, reading, writing, and deleting. So the only things Foo is really responsible for are:
* define column names and postions for the table
* convert rows from colon-separated format into perl arrays
* convert rows from perl arrays into colon-separated format
In SQL::Statement subclasses these responsibilities are assigned to two objects, a ::Statement object is responsible for opening the table, defining the column names and positions, and for creating new ::Table objects. A ::Table object is responsible for reading, converting, writing, and deleting data.
<<lessSQL::Statement is designed to be easy to embed in other modules and to be especially easy to embed in DBI drivers. It provides a SQL Engine and the other module needs to then provide a data source and a storage mechanism. For example, the DBD::CSV module uses SQL::Statement as an embedded SQL engine by implementing a file-based data source and by using DBI as the user interface. Similarly DBD::Amazon uses SQL::Statement as its SQL engine, provides its own extensions to the supported SQL syntax, and uses on-the-fly searches of Amazon.com as its data source.
SQL::Statement is the basis for eight existing DBDs (DBI database drivers). If you have a new data source, you too can create a DBD without having to reinvent the SQL wheel. Its fun, its easy, become a DBD author today!
SQL::Statement can be also be embedded without DBI. Well explore that first since developing a DBD uses most of the same methods and techniques.
The role of SQL::Statement subclasses
SQL::Statement provides a SQL parsing and execution engine. It does not provide a data source or storage mechanism other than in-memory tables. The DBD::File module is a subclass of SQL::Statement that provides access to file-based storage mechanisms. Its quite possible to use things other than files as data souces, in which case we wouldnt use DBD::File, instead wed replace DBD::Files methods with our own. In the examples below, well use DBD::File, replacing only a few methods.
SQL::Statement provides SQL parsing and evaluation and DBD::File provides file-based storage. The only thing missing is a data source - what we actually want to store and query. As an example suppose we are going to create a subclass called Foo that will provide as a data source a simple file similar to a passwd file - one record per line, fields separated by colons, with only three fields "username, uid, gid".
Consider what needs to happen to perform a SELECT query on our Foo data:
* recieve a SQL string
* parse the SQL string into a request structure
* open the table(s) specified in the request
* define column names and postions for the table
* read rows from the table
* convert the rows from colon-separated format into perl arrays
* match the columns and rows against the requested selection criteria
* return requested rows and columns to the user
To perform operations like INSERT and DELETE, we also need to:
* convert rows from perl arrays into colon-separated format
* write rows
* delete rows
SQL::Statement takes care of all of the SQL parsing and evaluation. DBD::File takes care of file opening, reading, writing, and deleting. So the only things Foo is really responsible for are:
* define column names and postions for the table
* convert rows from colon-separated format into perl arrays
* convert rows from perl arrays into colon-separated format
In SQL::Statement subclasses these responsibilities are assigned to two objects, a ::Statement object is responsible for opening the table, defining the column names and positions, and for creating new ::Table objects. A ::Table object is responsible for reading, converting, writing, and deleting data.
Download (0.085MB)
Added: 2006-06-13 License: Perl Artistic License Price:
1230 downloads
Regular Statement String 2.5.7
Regular Statement String (RSS) provides several libraries in C, Java, and COM. more>>
Regular Statement String (RSS) provides several libraries in C, Java, and COM to implement and demonstrate the key-value development method using well-designed "strings" (RSS) as the media. Regular Statement String also shows a way to write "Process Oriented" applications.
Enhancements:
- This release adds an implementation for SUN Solaris (SPARC).
<<lessEnhancements:
- This release adds an implementation for SUN Solaris (SPARC).
Download (0.33MB)
Added: 2007-04-12 License: Freeware Price:
926 downloads
mysqlstress 0.1 beta
mysqlstress is a program to stress a MySQL server. more>>
mysqlstress is small but powerfull program, though. It allows administrator, with a lot of arguments, to stress an mysql server to see if performance is given.
Usage
Usage: mysqlstress [OPTIONS]
-h, --hostname Connect to host. (default: localhost)
-u, --username User to log in. (default: root)
-p, --password Password to log in. (default: none)
-d, --database Database You want to connect. (default: mysql)
-S, --socket Connet to unix socket (default: NULL)
-P, --port Port number to use for connection. (default: 3306)
-n, --number Number of SQL statements per connection (default: 5000)
-s, --statement SQL statement you want to exec during stress test. (default "SELECT * FROM user")
-t, --threads Number of threads You want (default: 5000)
-i, --info Show version of MySQL Server
-c, --close Close MySQL connections (default: no). See README!
-q, --quiet No output, just work (default: no)
-V, --version Output version information and exit.
-H, --help Output this message and exit.
all options are logical, the only one is the -c or --close.
If you really want to stress your mysql dont close mysql connections.
Enhancements:
- first major release
<<lessUsage
Usage: mysqlstress [OPTIONS]
-h, --hostname Connect to host. (default: localhost)
-u, --username User to log in. (default: root)
-p, --password Password to log in. (default: none)
-d, --database Database You want to connect. (default: mysql)
-S, --socket Connet to unix socket (default: NULL)
-P, --port Port number to use for connection. (default: 3306)
-n, --number Number of SQL statements per connection (default: 5000)
-s, --statement SQL statement you want to exec during stress test. (default "SELECT * FROM user")
-t, --threads Number of threads You want (default: 5000)
-i, --info Show version of MySQL Server
-c, --close Close MySQL connections (default: no). See README!
-q, --quiet No output, just work (default: no)
-V, --version Output version information and exit.
-H, --help Output this message and exit.
all options are logical, the only one is the -c or --close.
If you really want to stress your mysql dont close mysql connections.
Enhancements:
- first major release
Download (0.067MB)
Added: 2005-04-11 License: GPL (GNU General Public License) Price:
1656 downloads
SQL::Abstract::Limit 0.12
SQL::Abstract::Limit is a portable LIMIT emulation. more>>
SQL::Abstract::Limit is a portable LIMIT emulation.
SYNOPSIS
use SQL::Abstract::Limit;
my $sql = SQL::Abstract::Limit->new( limit_dialect => LimitOffset );;
# or autodetect from a DBI $dbh:
my $sql = SQL::Abstract::Limit->new( limit_dialect => $dbh );
# or from a Class::DBI class:
my $sql = SQL::Abstract::Limit->new( limit_dialect => My::CDBI::App );
# or object:
my $obj = My::CDBI::App->retrieve( $id );
my $sql = SQL::Abstract::Limit->new( limit_dialect => $obj );
# generate SQL:
my ( $stmt, @bind ) = $sql->select( $table, @fields, %where, @order, $limit, $offset );
# Then, use these in your DBI statements
my $sth = $dbh->prepare( $stmt );
$sth->execute( @bind );
# Just generate the WHERE clause (only available for some syntaxes)
my ( $stmt, @bind ) = $sql->where( %where, @order, $limit, $offset );
<<lessSYNOPSIS
use SQL::Abstract::Limit;
my $sql = SQL::Abstract::Limit->new( limit_dialect => LimitOffset );;
# or autodetect from a DBI $dbh:
my $sql = SQL::Abstract::Limit->new( limit_dialect => $dbh );
# or from a Class::DBI class:
my $sql = SQL::Abstract::Limit->new( limit_dialect => My::CDBI::App );
# or object:
my $obj = My::CDBI::App->retrieve( $id );
my $sql = SQL::Abstract::Limit->new( limit_dialect => $obj );
# generate SQL:
my ( $stmt, @bind ) = $sql->select( $table, @fields, %where, @order, $limit, $offset );
# Then, use these in your DBI statements
my $sth = $dbh->prepare( $stmt );
$sth->execute( @bind );
# Just generate the WHERE clause (only available for some syntaxes)
my ( $stmt, @bind ) = $sql->where( %where, @order, $limit, $offset );
Download (0.014MB)
Added: 2007-04-05 License: Perl Artistic License Price:
932 downloads
SQL::Schema 0.31
SQL::Schema is a Perl module to convert a data dictionary into SQL statements. more>>
SQL::Schema is a Perl module to convert a data dictionary into SQL statements.
SYNOPSIS
use DBI;
my $dbh = DBI->connect(...);
use SQL::Schema;
my $schema = SQL::Schema->new($dbh);
my $sql = $schema->string;
print $sql;
print "$schema";
WARNING
This is alpha software. It currently works with Oracle databases only. The name of the module might be changed in future releases as well as its interface.
If somebody is modifying the datase schema during the life time of an SQL::Schema object, the object will probably fail and / or produce wrong information.
SQL::Schema is a class for objects representing a database schema. The methods of an instanciated object do allow to access the information within a databases data dictionary and to represent them as SQL create statements and the like using the proper SQL dialect.
Constructor
$schema = SQL::Schema->new($dbh);
The new method instanciates a schema object. The only argument required is a database handle, which has to offer the same API as described within DBI(3).
Methods
$sql = $schema->string;
Returns an SQL string containing several statements at once. This string contains all the SQL statements to create the database schema.
This method is overloaded with the string operator. So the following two lines are equivalent:
$sql = $schema->string;
$sql = "$schema";
<<lessSYNOPSIS
use DBI;
my $dbh = DBI->connect(...);
use SQL::Schema;
my $schema = SQL::Schema->new($dbh);
my $sql = $schema->string;
print $sql;
print "$schema";
WARNING
This is alpha software. It currently works with Oracle databases only. The name of the module might be changed in future releases as well as its interface.
If somebody is modifying the datase schema during the life time of an SQL::Schema object, the object will probably fail and / or produce wrong information.
SQL::Schema is a class for objects representing a database schema. The methods of an instanciated object do allow to access the information within a databases data dictionary and to represent them as SQL create statements and the like using the proper SQL dialect.
Constructor
$schema = SQL::Schema->new($dbh);
The new method instanciates a schema object. The only argument required is a database handle, which has to offer the same API as described within DBI(3).
Methods
$sql = $schema->string;
Returns an SQL string containing several statements at once. This string contains all the SQL statements to create the database schema.
This method is overloaded with the string operator. So the following two lines are equivalent:
$sql = $schema->string;
$sql = "$schema";
Download (0.033MB)
Added: 2007-04-05 License: Perl Artistic License Price:
933 downloads
SQL::Interpolate 0.33
SQL::Interpolate is a Perl module to interpolate Perl variables into SQL statements. more>>
SQL::Interpolate is a Perl module to interpolate Perl variables into SQL statements.
SYNOPSIS
use SQL::Interpolate qw(:all);
# Some sample data to interpolate:
my $s = blue; my @v = (5, 6);
# Variable references are transformed into bind parameters.
# The most basic usage involves scalarrefs (as well as arrayrefs
# preceeded by "IN").
my ($sql, @bind) = sql_interp
SELECT * FROM table WHERE x = , $s, AND y IN, @v;
# RESULT:
# $sql = SELECT * FROM mytable WHERE x = ? AND y IN (?, ?)
# @bind = ($s, @v);
# In certain contexts, an arrayref or hashref acts as a single tuple:
my ($sql, @bind) = sql_interp
INSERT INTO table, {x => $s, y => 1};
# RESULT:
# $sql = INSERT INTO mytable (x, y) VALUES(?, ?);
# @bind = ($s, 1);
my ($sql, @bind) = sql_interp
UPDATE table SET, {x => $s, y => 1}, WHERE y , 2;
# RESULT:
# $sql = UPDATE mytable SET x = ?, y = ? WHERE y ?;
# @bind = ($s, 1, 2);
# In general, a hashref provides a shortcut for specifying
# a logical-AND construction:
my ($sql, @bind) = sql_interp
SELECT * FROM table WHERE, {x => $s, y => @v};
# RESULT:
# $sql = SELECT * FROM mytable WHERE (x = ? AND y IN (?, ?));
# @bind = ($s, @v);
# In general, an arrayref acts as a result set or reference to
# a temporary table:
my ($sql, @bind) = sql_interp
[[1, 2], [4, 5]], UNION, [{x => 2, y => 3}, {x => 5, y => 6};
# RESULT:
# $sql = (SELECT ?, ? UNION ALL SELECT ?, ?) UNION
# (SELECT ? AS x, ? AS y UNION ALL SELECT ?, ?);
# @bind = (1,2,4,5, 2,3,5,6);
my ($sql, @bind) = sql_interp
SELECT * FROM, [[1, 2], [4, 5]]
# RESULT:
# $sql = SELECT * FROM (SELECT ?, ? UNION ALL SELECT ?, ?) AS tbl0;
# @bind = (1,2,4,5);
# Each result above is suitable for passing to DBI:
my $res = $dbh->selectall_arrayref($sql, undef, @bind);
# Besides these simple techniques shown, SQL-Interpolate includes
# various optional modules to further integrate SQL::Interpolate with
# DBI and streamline the syntax with source filtering and macros (see
# the L section):
use DBIx::Interpolate FILTER => 1;
...
my $rows = $dbx->selectall_arrayref(sql[
SELECT thid, date, title, subject
FROM threads
WHERE date > $x AND subject IN @subjects
]);
<<lessSYNOPSIS
use SQL::Interpolate qw(:all);
# Some sample data to interpolate:
my $s = blue; my @v = (5, 6);
# Variable references are transformed into bind parameters.
# The most basic usage involves scalarrefs (as well as arrayrefs
# preceeded by "IN").
my ($sql, @bind) = sql_interp
SELECT * FROM table WHERE x = , $s, AND y IN, @v;
# RESULT:
# $sql = SELECT * FROM mytable WHERE x = ? AND y IN (?, ?)
# @bind = ($s, @v);
# In certain contexts, an arrayref or hashref acts as a single tuple:
my ($sql, @bind) = sql_interp
INSERT INTO table, {x => $s, y => 1};
# RESULT:
# $sql = INSERT INTO mytable (x, y) VALUES(?, ?);
# @bind = ($s, 1);
my ($sql, @bind) = sql_interp
UPDATE table SET, {x => $s, y => 1}, WHERE y , 2;
# RESULT:
# $sql = UPDATE mytable SET x = ?, y = ? WHERE y ?;
# @bind = ($s, 1, 2);
# In general, a hashref provides a shortcut for specifying
# a logical-AND construction:
my ($sql, @bind) = sql_interp
SELECT * FROM table WHERE, {x => $s, y => @v};
# RESULT:
# $sql = SELECT * FROM mytable WHERE (x = ? AND y IN (?, ?));
# @bind = ($s, @v);
# In general, an arrayref acts as a result set or reference to
# a temporary table:
my ($sql, @bind) = sql_interp
[[1, 2], [4, 5]], UNION, [{x => 2, y => 3}, {x => 5, y => 6};
# RESULT:
# $sql = (SELECT ?, ? UNION ALL SELECT ?, ?) UNION
# (SELECT ? AS x, ? AS y UNION ALL SELECT ?, ?);
# @bind = (1,2,4,5, 2,3,5,6);
my ($sql, @bind) = sql_interp
SELECT * FROM, [[1, 2], [4, 5]]
# RESULT:
# $sql = SELECT * FROM (SELECT ?, ? UNION ALL SELECT ?, ?) AS tbl0;
# @bind = (1,2,4,5);
# Each result above is suitable for passing to DBI:
my $res = $dbh->selectall_arrayref($sql, undef, @bind);
# Besides these simple techniques shown, SQL-Interpolate includes
# various optional modules to further integrate SQL::Interpolate with
# DBI and streamline the syntax with source filtering and macros (see
# the L section):
use DBIx::Interpolate FILTER => 1;
...
my $rows = $dbx->selectall_arrayref(sql[
SELECT thid, date, title, subject
FROM threads
WHERE date > $x AND subject IN @subjects
]);
Download (0.056MB)
Added: 2007-04-05 License: Perl Artistic License Price:
933 downloads
SQLite 3.4.2
SQLite is an embeddable SQL engine in a C library. more>>
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.
Main features:
- Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
- Zero-configuration - no setup or administration needed.
- Implements most of SQL92. (Features not supported)
- A complete database is stored in a single disk file.
- Database files can be freely shared between machines with different byte orders.
- Supports databases up to 2 terabytes (241 bytes) in size.
- Sizes of strings and BLOBs limited only by available memory.
- Small code footprint: less than 30K lines of C code, less than 250KB code space (gcc on 486)
- Faster than popular client/server database engines for most common operations.
- Simple, easy to use API.
- TCL bindings included. Bindings for many other languages available separately.
- Well-commented source code with over 95% test coverage.
- Self-contained: no external dependencies.
- Sources are in the public domain. Use for any purpose.
The SQLite distribution comes with a standalone command-line access program (sqlite) that can be used to administer an SQLite database and which serves as an example of how to use the SQLite library.
Create A New Database:
- At a shell or DOS prompt, enter: "sqlite3 test.db". This will create a new database named "test.db". (You can use a different name if you like.)
- Enter SQL commands at the prompt to create and populate the new database.
Write Programs That Use SQLite
Below is a simple TCL program that demonstrates how to use the TCL interface to SQLite. The program executes the SQL statements given as the second argument on the database defined by the first argument. The commands to watch for are the sqlite3 command on line 7 which opens an SQLite database and creates a new TCL command named "db" to access that database, the invocation of the db command on line 8 to execute SQL commands against the database, and the closing of the database connection on the last line of the script.
#!/usr/bin/tclsh
if {$argc!=2} {
puts stderr "Usage: %s DATABASE SQL-STATEMENT"
exit 1
}
load /usr/lib/tclsqlite3.so Sqlite3
sqlite3 db [lindex $argv 0]
db eval [lindex $argv 1] x {
foreach v $x(*) {
puts "$v = $x($v)"
}
puts ""
}
db close
<<lessMain features:
- Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
- Zero-configuration - no setup or administration needed.
- Implements most of SQL92. (Features not supported)
- A complete database is stored in a single disk file.
- Database files can be freely shared between machines with different byte orders.
- Supports databases up to 2 terabytes (241 bytes) in size.
- Sizes of strings and BLOBs limited only by available memory.
- Small code footprint: less than 30K lines of C code, less than 250KB code space (gcc on 486)
- Faster than popular client/server database engines for most common operations.
- Simple, easy to use API.
- TCL bindings included. Bindings for many other languages available separately.
- Well-commented source code with over 95% test coverage.
- Self-contained: no external dependencies.
- Sources are in the public domain. Use for any purpose.
The SQLite distribution comes with a standalone command-line access program (sqlite) that can be used to administer an SQLite database and which serves as an example of how to use the SQLite library.
Create A New Database:
- At a shell or DOS prompt, enter: "sqlite3 test.db". This will create a new database named "test.db". (You can use a different name if you like.)
- Enter SQL commands at the prompt to create and populate the new database.
Write Programs That Use SQLite
Below is a simple TCL program that demonstrates how to use the TCL interface to SQLite. The program executes the SQL statements given as the second argument on the database defined by the first argument. The commands to watch for are the sqlite3 command on line 7 which opens an SQLite database and creates a new TCL command named "db" to access that database, the invocation of the db command on line 8 to execute SQL commands against the database, and the closing of the database connection on the last line of the script.
#!/usr/bin/tclsh
if {$argc!=2} {
puts stderr "Usage: %s DATABASE SQL-STATEMENT"
exit 1
}
load /usr/lib/tclsqlite3.so Sqlite3
sqlite3 db [lindex $argv 0]
db eval [lindex $argv 1] x {
foreach v $x(*) {
puts "$v = $x($v)"
}
puts ""
}
db close
Download (2.1MB)
Added: 2007-08-14 License: Public Domain Price:
551 downloads
SQLAlchemy 0.3.10
SQLAlchemy is a SQL toolkit and object relational mapper for Python. more>>
SQLAlchemy is a SQL toolkit and object relational mapper for Python.
The Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL. SQLAlchemy provides a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language.
- extremely easy to use for all the basic tasks, such as: accessing thread-safe and pooled connections, constructing SQL from Python expressions, finding object instances, and commiting object modifications back to the database.
- powerful enough for complicated tasks, such as: eager load a graph of objects and their dependencies via joins; map recursive adjacency structures automatically; map objects to not just tables but to any arbitrary join or select statement; combine multiple tables together to load whole sets of otherwise unrelated objects from a single result set; commit entire graphs of object changes in one step.
- built to conform to what DBAs demand, including the ability to swap out generated SQL with hand-optimized statements, full usage of bind parameters for all literal values, fully transactionalized and consistent updates using Unit of Work.
- modular. Different parts of SQLAlchemy can be used independently of the rest, including the connection pool, SQL construction, and ORM. SQLAlchemy is constructed in an open style that allows plenty of customization, with an architecture that supports custom datatypes, custom SQL extensions, and ORM plugins which can augment or extend mapping functionality.
SQLAlchemys Philosophy:
- SQL databases behave less and less like object collections the more size and performance start to matter; object collections behave less and less like tables and rows the more abstraction starts to matter. SQLAlchemy aims to accomodate both of these principles.
- Your classes arent tables, and your objects arent rows. Databases arent just collections of tables; theyre relational algebra engines. You dont have to select from just tables, you can select from joins, subqueries, and unions. Database and domain concepts should be visibly decoupled from the beginning, allowing both sides to develop to their full potential.
- For example, table metadata (objects that describe tables) are declared distinctly from the classes theyre designed to store. That way database relationship concepts dont interfere with your object design concepts, and vice-versa; the transition from table-mapping to selectable-mapping is seamless; a class can be mapped against the database in more than one way. SQLAlchemy provides a powerful mapping layer that can work as automatically or as manually as you choose, determining relationships based on foreign keys or letting you define the join conditions explicitly, to bridge the gap between database and domain.
SQLAlchemys Advantages:
- The Unit Of Work system organizes pending CRUD operations into queues and commits them all in one batch. It then performs a topological "dependency sort" of all items to be committed and deleted and groups redundant statements together. This produces the maxiumum efficiency and transaction safety, and minimizes chances of deadlocks. Modeled after Fowlers "Unit of Work" pattern as well as Java Hibernate.
- Function-based query construction allows boolean expressions, operators, functions, table aliases, selectable subqueries, create/update/insert/delete queries, correlated updates, correlated EXISTS clauses, UNION clauses, inner and outer joins, bind parameters, free mixing of literal text within expressions, as little or as much as desired. Query-compilation is vendor-specific; the same query object can be compiled into any number of resulting SQL strings depending on its compilation algorithm.
- Database mapping and class design are totally separate. Persisted objects have no subclassing requirement (other than object) and are POPOs : plain old Python objects. They retain serializability (pickling) for usage in various caching systems and session objects. SQLAlchemy "decorates" classes with non-intrusive property accessors to automatically log object creates and modifications with the UnitOfWork engine, to lazyload related data, as well as to track attribute change histories.
- Custom list classes can be used with eagerly or lazily loaded child object lists, allowing rich relationships to be created on the fly as SQLAlchemy appends child objects to an object attribute.
- Composite (multiple-column) primary keys are supported, as are "association" objects that represent the middle of a "many-to-many" relationship.
- Self-referential tables and mappers are supported. Adjacency list structures can be created, saved, and deleted with proper cascading, with no extra programming.
- Data mapping can be used in a row-based manner. Any bizarre hyper-optimized query that you or your DBA can cook up, you can run in SQLAlchemy, and as long as it returns the expected columns within a rowset, you can get your objects from it. For a rowset that contains more than one kind of object per row, multiple mappers can be chained together to return multiple object instance lists from a single database round trip.
- The type system allows pre- and post- processing of data, both at the bind parameter and the result set level. User-defined types can be freely mixed with built-in types. Generic types as well as SQL-specific types are available.
<<lessThe Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL. SQLAlchemy provides a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language.
- extremely easy to use for all the basic tasks, such as: accessing thread-safe and pooled connections, constructing SQL from Python expressions, finding object instances, and commiting object modifications back to the database.
- powerful enough for complicated tasks, such as: eager load a graph of objects and their dependencies via joins; map recursive adjacency structures automatically; map objects to not just tables but to any arbitrary join or select statement; combine multiple tables together to load whole sets of otherwise unrelated objects from a single result set; commit entire graphs of object changes in one step.
- built to conform to what DBAs demand, including the ability to swap out generated SQL with hand-optimized statements, full usage of bind parameters for all literal values, fully transactionalized and consistent updates using Unit of Work.
- modular. Different parts of SQLAlchemy can be used independently of the rest, including the connection pool, SQL construction, and ORM. SQLAlchemy is constructed in an open style that allows plenty of customization, with an architecture that supports custom datatypes, custom SQL extensions, and ORM plugins which can augment or extend mapping functionality.
SQLAlchemys Philosophy:
- SQL databases behave less and less like object collections the more size and performance start to matter; object collections behave less and less like tables and rows the more abstraction starts to matter. SQLAlchemy aims to accomodate both of these principles.
- Your classes arent tables, and your objects arent rows. Databases arent just collections of tables; theyre relational algebra engines. You dont have to select from just tables, you can select from joins, subqueries, and unions. Database and domain concepts should be visibly decoupled from the beginning, allowing both sides to develop to their full potential.
- For example, table metadata (objects that describe tables) are declared distinctly from the classes theyre designed to store. That way database relationship concepts dont interfere with your object design concepts, and vice-versa; the transition from table-mapping to selectable-mapping is seamless; a class can be mapped against the database in more than one way. SQLAlchemy provides a powerful mapping layer that can work as automatically or as manually as you choose, determining relationships based on foreign keys or letting you define the join conditions explicitly, to bridge the gap between database and domain.
SQLAlchemys Advantages:
- The Unit Of Work system organizes pending CRUD operations into queues and commits them all in one batch. It then performs a topological "dependency sort" of all items to be committed and deleted and groups redundant statements together. This produces the maxiumum efficiency and transaction safety, and minimizes chances of deadlocks. Modeled after Fowlers "Unit of Work" pattern as well as Java Hibernate.
- Function-based query construction allows boolean expressions, operators, functions, table aliases, selectable subqueries, create/update/insert/delete queries, correlated updates, correlated EXISTS clauses, UNION clauses, inner and outer joins, bind parameters, free mixing of literal text within expressions, as little or as much as desired. Query-compilation is vendor-specific; the same query object can be compiled into any number of resulting SQL strings depending on its compilation algorithm.
- Database mapping and class design are totally separate. Persisted objects have no subclassing requirement (other than object) and are POPOs : plain old Python objects. They retain serializability (pickling) for usage in various caching systems and session objects. SQLAlchemy "decorates" classes with non-intrusive property accessors to automatically log object creates and modifications with the UnitOfWork engine, to lazyload related data, as well as to track attribute change histories.
- Custom list classes can be used with eagerly or lazily loaded child object lists, allowing rich relationships to be created on the fly as SQLAlchemy appends child objects to an object attribute.
- Composite (multiple-column) primary keys are supported, as are "association" objects that represent the middle of a "many-to-many" relationship.
- Self-referential tables and mappers are supported. Adjacency list structures can be created, saved, and deleted with proper cascading, with no extra programming.
- Data mapping can be used in a row-based manner. Any bizarre hyper-optimized query that you or your DBA can cook up, you can run in SQLAlchemy, and as long as it returns the expected columns within a rowset, you can get your objects from it. For a rowset that contains more than one kind of object per row, multiple mappers can be chained together to return multiple object instance lists from a single database round trip.
- The type system allows pre- and post- processing of data, both at the bind parameter and the result set level. User-defined types can be freely mixed with built-in types. Generic types as well as SQL-specific types are available.
Download (0.46MB)
Added: 2007-07-22 License: MIT/X Consortium License Price:
827 downloads
SQL::Generator 0.02
SQL::Generator is a Perl module to generate SQL-statements with oo-perl. more>>
SQL::Generator is a Perl module to generate SQL-statements with oo-perl.
SYNOPSIS
use SQL::Generator;
With this module you can easily (and very flexible) generate/construct sql-statements. As a rookie, you are used to write a lot of sprintf`s every time i needed a statement (i.e.for DBI).
Later you start writing your own functions for every statement and every sql-dialect (RDBMS use to have their own dialect extending the general SQL standard). This SQL::Generator module is an approach to have a flexible abstraction above the statement generation, which makes it easy to implement in your perl code. Its main purpose is to directly use perl variables/objects with SQL-like code.
<<lessSYNOPSIS
use SQL::Generator;
With this module you can easily (and very flexible) generate/construct sql-statements. As a rookie, you are used to write a lot of sprintf`s every time i needed a statement (i.e.for DBI).
Later you start writing your own functions for every statement and every sql-dialect (RDBMS use to have their own dialect extending the general SQL standard). This SQL::Generator module is an approach to have a flexible abstraction above the statement generation, which makes it easy to implement in your perl code. Its main purpose is to directly use perl variables/objects with SQL-like code.
Download (0.013MB)
Added: 2007-04-05 License: Perl Artistic License Price:
932 downloads
SQLyog Free Edition 5.18
SQLyog is an easy to use tool that lets you manage your MySQL database anywhere in the world. more>>
SQLyog is an easy to use tool that lets you manage your MySQL database anywhere in the world. SQLyog is a tool that allows you manage MySQL database.
Main features:
Developer / User Productivity
- HTML Schema Documentation
- Shortcuts to quickly generate SQL statements and paste object names
- Learn MySQL by looking at the SQL generated by SQLyog
- Multi-tab Query Editor and Result-set Editor
- Multiple Query Execution
- Multi-threaded Query execution with option to stop long running queries
- SQL Templates
- Excel-style grid interface to view/update resultsets
- Multi-format Blob editor
- View data in Grid/Text Mode
- ResultSet/Data Export to CSV/XML/HTML
- Full Support from 3.23.38 to the latest 5.x
- Support for all MySQL table handlers
- Excel friendly resultsets/table-data export to clipboard/file
- Dialogless table and resultset editor
DBA Productivity
- Restoring / Importing large SQL dumps
- MySQL 5.x objects support
- User Management
- Managing hosted MySQL
- Connection Manager
- Index Management
- Relationship/Foreign Key Manager
- Reorder Columns
- Copy objects to another Host with single click
- Table diagnostics
- Flush Tools
- Object Browser
- Creating/dropping database
- Optimized for managing Hosted MySQL
- Profiling
- Multiple database connections
Technology
- Turbo Speed MySQL Management. Uses native MySQL C API - the fastest way to communicate with MySQL server
- 100% keyboard friendly
- Small compact binary
- Minimal use of Registry - easy migration of User Preferences by dragging and dropping config files.
- Non-cluttered look and feel, ability to show/hide panes
<<lessMain features:
Developer / User Productivity
- HTML Schema Documentation
- Shortcuts to quickly generate SQL statements and paste object names
- Learn MySQL by looking at the SQL generated by SQLyog
- Multi-tab Query Editor and Result-set Editor
- Multiple Query Execution
- Multi-threaded Query execution with option to stop long running queries
- SQL Templates
- Excel-style grid interface to view/update resultsets
- Multi-format Blob editor
- View data in Grid/Text Mode
- ResultSet/Data Export to CSV/XML/HTML
- Full Support from 3.23.38 to the latest 5.x
- Support for all MySQL table handlers
- Excel friendly resultsets/table-data export to clipboard/file
- Dialogless table and resultset editor
DBA Productivity
- Restoring / Importing large SQL dumps
- MySQL 5.x objects support
- User Management
- Managing hosted MySQL
- Connection Manager
- Index Management
- Relationship/Foreign Key Manager
- Reorder Columns
- Copy objects to another Host with single click
- Table diagnostics
- Flush Tools
- Object Browser
- Creating/dropping database
- Optimized for managing Hosted MySQL
- Profiling
- Multiple database connections
Technology
- Turbo Speed MySQL Management. Uses native MySQL C API - the fastest way to communicate with MySQL server
- 100% keyboard friendly
- Small compact binary
- Minimal use of Registry - easy migration of User Preferences by dragging and dropping config files.
- Non-cluttered look and feel, ability to show/hide panes
Download (0.96MB)
Added: 2006-10-17 License: Freeware Price:
5721 downloads
JoSQL 1.8
JoSQL (SQL for Java Objects) provides the ability for a developer to apply a SQL statement to a collection of Java Objects. more>>
JoSQL (SQL for Java Objects) provides the ability for a developer to apply a SQL statement to a collection of Java Objects.
JoSQL provides the ability to search, order and group ANY Java objects and should be applied when you want to perform SQL-like queries on a collection of Java Objects.
Example:
// Get a list of java.io.File objects.
List myObjs = getMyObjects ();
// Create a new Query.
Query q = new Query ();
// Parse the SQL you are going to use, it is assumed here that
// "myObjs" contains instances of "java.io.File".
q.parse ("SELECT name,length " +
"FROM java.io.File " +
"WHERE fileExtension (name) = :fileExt " +
"ORDER BY length DESC, name " +
"EXECUTE ON RESULTS avg (:_allobjs, length) avgLength");
// Set the bind variable "fileExt".
q.setVariable ("fileExt", "java");
// Execute the query.
QueryResults qr = q.execute (myObjs);
// Get the average length, this is a save value, the result
// of executing the call "avg (:_allobjs, length)", it is saved against
// key: "avgLength".
Map saveValues = qr.getSaveValues ();
Number avg = (Number) saveValues.get ("avgLength");
// Cycle over the results.
List res = qr.getResults ();
for (int i = 0; i < res.size (); i++)
{
// This time there is a List for each row, index 0 holds the name of
// the file that matched, index 1 holds the length.
List r = (List) res.get (i);
System.out.println ("NAME: " + r.get (0));
System.out.println ("LENGTH: " + r.get (1) + ", AVG: " + avg);
}
Enhancements:
- This release focuses on bug fixes.
<<lessJoSQL provides the ability to search, order and group ANY Java objects and should be applied when you want to perform SQL-like queries on a collection of Java Objects.
Example:
// Get a list of java.io.File objects.
List myObjs = getMyObjects ();
// Create a new Query.
Query q = new Query ();
// Parse the SQL you are going to use, it is assumed here that
// "myObjs" contains instances of "java.io.File".
q.parse ("SELECT name,length " +
"FROM java.io.File " +
"WHERE fileExtension (name) = :fileExt " +
"ORDER BY length DESC, name " +
"EXECUTE ON RESULTS avg (:_allobjs, length) avgLength");
// Set the bind variable "fileExt".
q.setVariable ("fileExt", "java");
// Execute the query.
QueryResults qr = q.execute (myObjs);
// Get the average length, this is a save value, the result
// of executing the call "avg (:_allobjs, length)", it is saved against
// key: "avgLength".
Map saveValues = qr.getSaveValues ();
Number avg = (Number) saveValues.get ("avgLength");
// Cycle over the results.
List res = qr.getResults ();
for (int i = 0; i < res.size (); i++)
{
// This time there is a List for each row, index 0 holds the name of
// the file that matched, index 1 holds the length.
List r = (List) res.get (i);
System.out.println ("NAME: " + r.get (0));
System.out.println ("LENGTH: " + r.get (1) + ", AVG: " + avg);
}
Enhancements:
- This release focuses on bug fixes.
Download (0.24MB)
Added: 2007-05-30 License: The Apache License 2.0 Price:
880 downloads
SQuirreL SQL Client 2.5.1
SQuirreL SQL Client is a graphical Java program that will allow you to view the structure of a JDBC compliant database. more>>
SQuirreL SQL Client is a graphical Java program that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc. The minimum version of Java supported is 1.4.x. We recommend 1.5.x. See the Old Versions page for versions of SQuirreL that will work with older versions of Java.
SQuirreLs functionality can be extended through the use of plugins. A short introduction can be found here. To see the change history (including changes not yet released) click here.
Susan Cline graciously took the time to document the steps she followed to setup an Apache Derby database from scratch and use the SQuirreL SQL Client to explore it.
Quite some time ago Kulvir Singh Bhogal wrote a great tutorial on SQuirreL and published it at the IBM developerWorks site. He has kindly allowed us to mirror it locally. The tutorial is not really up to date but especially for doing the first steps it is still of help.
SQuirrel was originally released under the GNU General Public License. Since version 1.1beta2 it has been released under the GNU Lesser General Public License.
Whats New in This Release:
1716859 Cant see data in content tab or row count tab (MS SQLServer databases
with a dash ("-") in their name would cause the content tab or row count
tabs to render no data.
1714476: (DB copy uses wrong case for table names) The copy operation would
sometimes fail to select records from the source table. Since the
case for the source table is always known to be correct, the plugin
no longer erroneously attempts to correct the case.
1700093: Formatter fails for insert script with multiple subselects
Refactoring Plugin: SQL-Server needs eol between GO and statement.
Fixed bug which appeared while editing tables in PostgreSQL 8.1. If the table
was created without an OID column, the last column would not be editable.
Fix for issue where dates arent correctly displayed or updated when using
treat date as timestamp pref in the SQl Editor result panel.
Use the last directory that a file was imported from when importing additional
files for binary fields.
1699294: Squirrel imports BLOB, but does not update data
Oracle Plugin: Handle slashes when they are used as statement separators.
137984 (Bug in alias delete) The problem was that notifications were being
sent to the alias drop-down that the item was being deleted which trigger an
update and new selection forcing the connect to alias window to be launched.
Now, the alias drop down is disabled while the update is happening and enabled
immediately afterward.
<<lessSQuirreLs functionality can be extended through the use of plugins. A short introduction can be found here. To see the change history (including changes not yet released) click here.
Susan Cline graciously took the time to document the steps she followed to setup an Apache Derby database from scratch and use the SQuirreL SQL Client to explore it.
Quite some time ago Kulvir Singh Bhogal wrote a great tutorial on SQuirreL and published it at the IBM developerWorks site. He has kindly allowed us to mirror it locally. The tutorial is not really up to date but especially for doing the first steps it is still of help.
SQuirrel was originally released under the GNU General Public License. Since version 1.1beta2 it has been released under the GNU Lesser General Public License.
Whats New in This Release:
1716859 Cant see data in content tab or row count tab (MS SQLServer databases
with a dash ("-") in their name would cause the content tab or row count
tabs to render no data.
1714476: (DB copy uses wrong case for table names) The copy operation would
sometimes fail to select records from the source table. Since the
case for the source table is always known to be correct, the plugin
no longer erroneously attempts to correct the case.
1700093: Formatter fails for insert script with multiple subselects
Refactoring Plugin: SQL-Server needs eol between GO and statement.
Fixed bug which appeared while editing tables in PostgreSQL 8.1. If the table
was created without an OID column, the last column would not be editable.
Fix for issue where dates arent correctly displayed or updated when using
treat date as timestamp pref in the SQl Editor result panel.
Use the last directory that a file was imported from when importing additional
files for binary fields.
1699294: Squirrel imports BLOB, but does not update data
Oracle Plugin: Handle slashes when they are used as statement separators.
137984 (Bug in alias delete) The problem was that notifications were being
sent to the alias drop-down that the item was being deleted which trigger an
update and new selection forcing the connect to alias window to be launched.
Now, the alias drop down is disabled while the update is happening and enabled
immediately afterward.
Download (MB)
Added: 2007-05-20 License: LGPL (GNU Lesser General Public License) Price:
563 downloads
SQL::Shell 1.13
SQL::Shell is a command interpreter for DBI shells. more>>
SQL::Shell is a command interpreter for DBI shells.
SYNOPSIS
use SQL::Shell;
#Initialise and configure
my $sqlsh = new SQL::Shell(%settings);
$sqlsh->set($setting, $new_value);
$value = $sqlsh->get($setting);
#Interpret commands
$sqlsh->execute_command($command);
$sqlsh->run_script($filename);
SQL::Shell is a command-interpreter API for building shells and batch scripts. A command-line interface with readline support - sqlsh.pl - is included as part of the CPAN distribution. See < SQL::Shell::Manual > for a user guide.
SQL::Shell offers features similar to the mysql or sql*plus client programs but is database independent. The default command syntax is arguably more user-friendly than dbish not requiring any go, do or slashes to fire SQL statements at the database.
Main features:
- issuing common SQL statements by simply typing them
- command history
- listing drivers, datasources, tables
- describing a table or the entire schema
- dumping and loading data to/from delimited text files
- character set conversion when loading data
- logging of queries, results or all commands to file
- a number of formats for display/logging data (sql, xml, delimited, boxed)
- executing a series of commands from a file
You can also install custom commands, rendering formats and command history mechanisms. All the commands run by the interpreter are available via the API so if you dont like the default command syntax you can replace the command regexes with your own.
Its been developed and used in anger with Oracle and mysql but should work with any database with a DBD:: driver.
<<lessSYNOPSIS
use SQL::Shell;
#Initialise and configure
my $sqlsh = new SQL::Shell(%settings);
$sqlsh->set($setting, $new_value);
$value = $sqlsh->get($setting);
#Interpret commands
$sqlsh->execute_command($command);
$sqlsh->run_script($filename);
SQL::Shell is a command-interpreter API for building shells and batch scripts. A command-line interface with readline support - sqlsh.pl - is included as part of the CPAN distribution. See < SQL::Shell::Manual > for a user guide.
SQL::Shell offers features similar to the mysql or sql*plus client programs but is database independent. The default command syntax is arguably more user-friendly than dbish not requiring any go, do or slashes to fire SQL statements at the database.
Main features:
- issuing common SQL statements by simply typing them
- command history
- listing drivers, datasources, tables
- describing a table or the entire schema
- dumping and loading data to/from delimited text files
- character set conversion when loading data
- logging of queries, results or all commands to file
- a number of formats for display/logging data (sql, xml, delimited, boxed)
- executing a series of commands from a file
You can also install custom commands, rendering formats and command history mechanisms. All the commands run by the interpreter are available via the API so if you dont like the default command syntax you can replace the command regexes with your own.
Its been developed and used in anger with Oracle and mysql but should work with any database with a DBD:: driver.
Download (0.030MB)
Added: 2006-10-18 License: Perl Artistic License Price:
1104 downloads
TbsSQL 2.0
TbsSQL is a PHP class for SQL abstraction. more>>
TbsSQL is a PHP class for SQL abstraction. TbsSQLs goal of this tool is to reduce the code when working with SQL through PHP. The TbsSQL is available for the following databases:
- MySQL
- MySQLi
- SQL-Server (via Ms-Odbc)
- PostgreSQL (version 7.2 or higher)
Example:
$id = 29;
$name = "boby";
$Db->Execute(UPDATE table1 SET name=@2@ WHERE (id=%1%), $id, $name);
In this example, the SQL statement sent to the database will be: UPDATE table1 SET name=boby WHERE (id=29)
TbsSQL supports the following jokers in your SQL statements (n must be the number of the place of the argument in the TbsSQL command)
- %n% the argument will be protected against Sql Injection.
- @n@ the argument will be protected against Sql Injection and delimited as a string value with the relevant format for the database.
- #n# the argument will be converted as a date value without time with the relevant format for the database.
- ~n~ the argument will be converted as a date and time value with the relevant format for the database.
Enhancements:
- This release can retrieve a list of keys/values.
- It can delete PHP connection variables after making the connection.
- MySQLi is now supported.
<<less- MySQL
- MySQLi
- SQL-Server (via Ms-Odbc)
- PostgreSQL (version 7.2 or higher)
Example:
$id = 29;
$name = "boby";
$Db->Execute(UPDATE table1 SET name=@2@ WHERE (id=%1%), $id, $name);
In this example, the SQL statement sent to the database will be: UPDATE table1 SET name=boby WHERE (id=29)
TbsSQL supports the following jokers in your SQL statements (n must be the number of the place of the argument in the TbsSQL command)
- %n% the argument will be protected against Sql Injection.
- @n@ the argument will be protected against Sql Injection and delimited as a string value with the relevant format for the database.
- #n# the argument will be converted as a date value without time with the relevant format for the database.
- ~n~ the argument will be converted as a date and time value with the relevant format for the database.
Enhancements:
- This release can retrieve a list of keys/values.
- It can delete PHP connection variables after making the connection.
- MySQLi is now supported.
Download (0.012MB)
Added: 2007-03-12 License: LGPL (GNU Lesser General Public License) Price:
958 downloads
xplain2sql 2.5.1 Beta
Xplain2sql converts files from Xplain to SQL. more>>
Xplain2sql converts files from Xplain to SQL. xplain2sql supports a very large subset of Xplain, and it can convert from Xplain to Microsoft SQL Server, DB/2, Inprise InterBase, PostgreSQL, Oracle, MySQL, or ANSI-92 SQL.
It can also generate an XML description of the generated SQL. This XML description can be used to create low-level middle-tier code.
A Delphi/ADO XSLT style sheet is included. The C source code release should compile on any platform with an ANSI C compiler.
There are binary releases for FreeBSD, BeOS, Linux, and Windows 2000.
Xplain2sql supports a very large subset of Xplain already, and it is continually extended until full support is reached. Currently it can convert from Xplain to Microsoft SQL Server, Inprise InterBase, DB/2, PostgreSQL, Microsoft Access, and ANSI-92 SQL:
- Microsoft SQL Server support is very complete.
- Quite complete DB/2 support. Non literal inits are currently missing.
- InterBase support for init works only for literal inits (so attributes dont work). And because InterBase doesnt have the concept of temporary table, the extend and value only work for a single user.
- PostgreSQL is quite complete with the new PostgreSQL 7.3 release.
- Initial, but fairly complete Oracle support.
- Generates Microsoft Access data definition commands. However, it seems impossible to run an entire script against an Access database. Having to run each create table statement by hand is quite tedious.
- Generates good ANSI-92, however inits with non-literal values cannot be supported by ANSI-92 because it doesnt have the concept of before and after insert triggers.
Enhancements:
- Assert support was added.
- If-then-else is supported in init [default] statements for dialects that support triggers.
<<lessIt can also generate an XML description of the generated SQL. This XML description can be used to create low-level middle-tier code.
A Delphi/ADO XSLT style sheet is included. The C source code release should compile on any platform with an ANSI C compiler.
There are binary releases for FreeBSD, BeOS, Linux, and Windows 2000.
Xplain2sql supports a very large subset of Xplain already, and it is continually extended until full support is reached. Currently it can convert from Xplain to Microsoft SQL Server, Inprise InterBase, DB/2, PostgreSQL, Microsoft Access, and ANSI-92 SQL:
- Microsoft SQL Server support is very complete.
- Quite complete DB/2 support. Non literal inits are currently missing.
- InterBase support for init works only for literal inits (so attributes dont work). And because InterBase doesnt have the concept of temporary table, the extend and value only work for a single user.
- PostgreSQL is quite complete with the new PostgreSQL 7.3 release.
- Initial, but fairly complete Oracle support.
- Generates Microsoft Access data definition commands. However, it seems impossible to run an entire script against an Access database. Having to run each create table statement by hand is quite tedious.
- Generates good ANSI-92, however inits with non-literal values cannot be supported by ANSI-92 because it doesnt have the concept of before and after insert triggers.
Enhancements:
- Assert support was added.
- If-then-else is supported in init [default] statements for dialects that support triggers.
Download (0.42MB)
Added: 2007-03-02 License: EFL (Eiffel Forum License) Price:
966 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above sql statement search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed