192 lines
3.8 KiB
Java
192 lines
3.8 KiB
Java
package network;
|
|
|
|
import java.io.File;
|
|
import java.sql.Connection;
|
|
import java.sql.DriverManager;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Statement;
|
|
import utils.GlobalLog;
|
|
import utils.LogFilter;
|
|
|
|
// Only to be called by the generic driver.
|
|
public class JDBCDriverSQLite extends JDBCDriver
|
|
{
|
|
private static Connection connection = null;
|
|
public static final String databaseFolder = "db/";
|
|
public static final String databaseName = "catfood";
|
|
|
|
@Override
|
|
public boolean Connect()
|
|
{
|
|
if(connection == null)
|
|
{
|
|
try
|
|
{
|
|
{ // Scope to discard file...
|
|
File f = new File(databaseFolder);
|
|
if(!f.exists() || !f.isDirectory())
|
|
{
|
|
f.mkdir();
|
|
}
|
|
}
|
|
|
|
// db parameters
|
|
String url = "jdbc:sqlite:" + databaseFolder + databaseName + ".db";
|
|
|
|
// create a connection to the database
|
|
connection = DriverManager.getConnection(url);
|
|
|
|
GlobalLog.Log(LogFilter.Database, "Connection to SQLite has been established.");
|
|
}
|
|
catch (SQLException e)
|
|
{
|
|
GlobalLog.Error(e.getMessage());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
GlobalLog.Log(LogFilter.Database, "SQLite database asked to connect a second time. This is perfectly fine as this app has all its data tied together.");
|
|
}
|
|
|
|
return connection != null;
|
|
}
|
|
|
|
@Override
|
|
public boolean Disconnect()
|
|
{
|
|
try
|
|
{
|
|
if (connection != null)
|
|
{
|
|
connection.close();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
catch (SQLException ex)
|
|
{
|
|
GlobalLog.Error(ex.getMessage());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ResultSet ExecuteReturningStatement(JDBCStatementType type, String command, String[] args)
|
|
{
|
|
if(connection == null)
|
|
return null;
|
|
|
|
if(command == null || command.length() == 0)
|
|
return null;
|
|
|
|
try
|
|
{
|
|
if(args != null && args.length > 0)
|
|
{
|
|
PreparedStatement statement = connection.prepareStatement(command);
|
|
ResultSet set = null;
|
|
|
|
for(int i = 0; i < args.length; ++i)
|
|
statement.setString(i + 1, args[i]);
|
|
|
|
switch(type)
|
|
{
|
|
case Select:
|
|
set = statement.executeQuery();
|
|
break;
|
|
|
|
default:
|
|
throw new Exception("Unsupported statement type for this function!");
|
|
}
|
|
|
|
return set;
|
|
}
|
|
else
|
|
{
|
|
Statement statement = connection.createStatement();
|
|
ResultSet set = statement.executeQuery(command);
|
|
return set;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
try
|
|
{
|
|
GlobalLog.Fatal(e.getMessage());
|
|
}
|
|
catch (Exception e1)
|
|
{
|
|
e1.printStackTrace();
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public boolean ExecuteStatement(JDBCStatementType type, String command, String[] args)
|
|
{
|
|
if(connection == null)
|
|
return false;
|
|
|
|
if(command == null || command.length() == 0)
|
|
return false;
|
|
|
|
try
|
|
{
|
|
if(args != null && args.length > 0)
|
|
{
|
|
boolean executed = false;
|
|
PreparedStatement statement = connection.prepareStatement(command);
|
|
//GlobalLog.Log("COMMAND IS -- " + command);
|
|
|
|
for(int i = 0; i < args.length; ++i)
|
|
{
|
|
//GlobalLog.Log("Args: " + args[i]);
|
|
statement.setString(i + 1, args[i]);
|
|
}
|
|
|
|
switch(type)
|
|
{
|
|
case Create:
|
|
executed = statement.executeUpdate() == 1;
|
|
break;
|
|
|
|
case Update:
|
|
executed = statement.executeUpdate() == 1;
|
|
break;
|
|
|
|
case Insert:
|
|
executed = statement.executeUpdate() == 1;
|
|
break;
|
|
|
|
default:
|
|
throw new Exception("Unsupported statement type for this function!");
|
|
}
|
|
|
|
return executed;
|
|
}
|
|
else
|
|
{
|
|
Statement statement = connection.createStatement();
|
|
boolean executed = statement.execute(command);
|
|
return executed;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
try
|
|
{
|
|
GlobalLog.Fatal(e.getMessage());
|
|
}
|
|
catch (Exception e1)
|
|
{
|
|
e1.printStackTrace();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|