Java
We can use a modified version of the SQLite JDBC Driver.
Here are the steps test it:
1. Compile LiteReplica on your computer or use pre-compiled binaries. You can request them by e-mail for testing purposes.
2. Download the modified driver:
mkdir litereplica-jdbc
cd litereplica-jdbc
wget litereplica.io/litereplica-jdbc.tar.gz
tar zxvf litereplica-jdbc.tar.gz
Usage
We can run the tests in 2 terminals:
./run Master
./run Slave
Example code
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Master
{
public static void main(String[] args)
{
Connection connection = null;
try
{
// create a database connection
connection = DriverManager.getConnection("jdbc:sqlite:file:data.db?replica=master&slave=tcp://server:port");
Statement statement = connection.createStatement();
statement.setQueryTimeout(30); // set timeout to 30 sec.
statement.executeUpdate("drop table if exists person");
statement.executeUpdate("create table person (id integer, name string)");
statement.executeUpdate("insert into person values(1, 'leo')");
statement.executeUpdate("insert into person values(2, 'yui')");
ResultSet rs = statement.executeQuery("select * from person");
while(rs.next())
{
// read the result set
System.out.println("name = " + rs.getString("name"));
System.out.println("id = " + rs.getInt("id"));
}
}
catch(SQLException e)
{
// if the error message is "out of memory",
// it probably means no database file is found
System.err.println(e.getMessage());
}
finally
{
try
{
if(connection != null)
connection.close();
}
catch(SQLException e)
{
// connection close failed.
System.err.println(e);
}
}
}
}