
// SQLiteInfo.java
// Andrew Davison, ad@coe.psu.ac.th, Nov. 2022

/* Ways to find out about SQLite and its JDBC driver.

    Usage:
      > compile SQLiteInfo.java
      > run SQLiteInfo
*/

import java.sql.*;


public class SQLiteInfo
{

  public static void main(String[] args)
  {
    try {
      Connection conn = DriverManager.getConnection(
                                       "jdbc:sqlite:");  // memory db
      DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();

      System.out.println("  Driver: " + dm.getDriverName() +
                  "; version: " + dm.getDriverVersion());

      System.out.println("  Product: " + 
                              dm.getDatabaseProductName() +
              "; version: " + dm.getDatabaseProductVersion());

      boolean hasFUJs = dm.supportsFullOuterJoins();
      System.out.println("  Supports Full Outer Joins: " + hasFUJs);

      boolean hasSPs = dm.supportsStoredProcedures();
      System.out.println("  Supports Stored Procedures: " + hasSPs);

      boolean hasTrans = dm.supportsTransactions();
      System.out.println("  Supports Transactions: " + hasTrans);

      boolean hasBUs = dm.supportsBatchUpdates();
      System.out.println("  Supports Batch Updates: " + hasBUs);

      /* many more listed in
         https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/DatabaseMetaData.html
      */

      conn.close();
    }
    catch (SQLException e) 
    {  System.out.println(e);  }
  } /* main */

}  // end of SQLiteInfo class