/*
* Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth.sql;
import java.sql.SQLException;
/**
* Represents a connection to a (real or simulated) database.
*/
public interface DbInterface {
/**
* Drop all objects in the database.
*/
void reset() throws SQLException;
/**
* Connect to the database.
*/
void connect() throws Exception;
/**
* Disconnect from the database.
*/
void disconnect() throws SQLException;
/**
* Close the connection and the database.
*/
void end() throws SQLException;
/**
* Create the specified table.
*
* @param table the table to create
*/
void createTable(Table table) throws SQLException;
/**
* Drop the specified table.
*
* @param table the table to drop
*/
void dropTable(Table table) throws SQLException;
/**
* Create an index.
*
* @param index the index to create
*/
void createIndex(Index index) throws SQLException;
/**
* Drop an index.
*
* @param index the index to drop
*/
void dropIndex(Index index) throws SQLException;
/**
* Insert a row into a table.
*
* @param table the table
* @param c the column list
* @param v the values
* @return the result
*/
Result insert(Table table, Column[] c, Value[] v) throws SQLException;
/**
* Execute a query.
*
* @param sql the SQL statement
* @return the result
*/
Result select(String sql) throws SQLException;
/**
* Delete a number of rows.
*
* @param table the table
* @param condition the condition
* @return the result
*/
Result delete(Table table, String condition) throws SQLException;
/**
* Update the given table with the new values.
*
* @param table the table
* @param columns the columns to update
* @param values the new values
* @param condition the condition
* @return the result of the update
*/
Result update(Table table, Column[] columns, Value[] values, String condition) throws SQLException;
/**
* Enable or disable autocommit.
*
* @param b the new value
*/
void setAutoCommit(boolean b) throws SQLException;
/**
* Commit a pending transaction.
*/
void commit() throws SQLException;
/**
* Roll back a pending transaction.
*/
void rollback() throws SQLException;
}