Java連線SQLite資料庫


要使用java程式連線SQLite,並與SQLite進行資料存取操作,必須在系統上設定SQLite JDBC驅動程式和安裝Java JDK。按照以下步驟進行:

  • 從sqlite-jdbc儲存庫下載最新版本的sqlite-jdbc-(VERSION).jar
  • 將下載的jar檔案新增到類路徑。
  • 使用java連線到SQLite資料庫。

1. 連線到SQLite資料庫

開啟Eclipse IDE,建立一個JAVA工程:JavaWithSQLite,下載所需的sqlite-jdbc-(VERSION).jar(下載地址:http://bitbucket.org/xerial/sqlite-jdbc/downloads/ 或者 http://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.18.0 ),並將它放入到專案的類庫中。

使用以下程式碼使用Java程式設計語言連線到SQLite資料庫,首先建立一個類:ConnectSQLite.java,其程式碼如下所示 -

package com.yiibai;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectSQLite {
    /**
     * Connect to a sample database
     */
    public static void connect() {
        Connection conn = null;
        try {
            // db parameters
            String url = "jdbc:sqlite:D:/software/sqlite/java-sqlite.db";
            // create a connection to the database
            conn = DriverManager.getConnection(url);

            System.out.println("Connection to SQLite has been established.");

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        connect();
    }
}

執行上面程式碼後,應該會建立一個檔案:D:/software/sqlite/java-sqlite.db,並與資料庫java-sqlite.db連線。

使用java建立資料庫

還可以使用java程式設計語言在SQLite中建立一個新的資料庫。假設要使用Java來建立一個名為java_sqlite.db的資料庫。建立一個公共類:CreateDB.java並使用以下程式碼:

package com.yiibai;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public class CreateDB {

    public static void createNewDatabase(String fileName) {

        String url = "jdbc:sqlite:" + fileName;

        try {
            Connection conn = DriverManager.getConnection(url);
            if (conn != null) {
                DatabaseMetaData meta = conn.getMetaData();
                System.out.println("The driver name is " + meta.getDriverName());
                System.out.println("A new database has been created.");
            }

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void main(String[] args) {
        createNewDatabase("D:/software/sqlite/create-db.db");
    }
}

執行上面程式碼,得到以下結果 -

The driver name is SQLiteJDBC
A new database has been created.

現在建立一個名為「create-db.db」的新資料庫。可以看到對應建立目錄有一個檔案:create-db.db存在。

使用java建立一個表

假設要通過Java程式在SQLite中建立一個名為tb_emp的表,tb_emp表具有id,namecapacity這三列。首先建立一個Java類:CreateTable.java,並使用以下程式碼:

package com.yiibai;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class CreateTable {

    public static void createNewTable() {
        // SQLite connection string
        String url = "jdbc:sqlite:D:/software/sqlite/java-sqlite.db";

        // SQL statement for creating a new table
        String sql = "CREATE TABLE IF NOT EXISTS employees (\n" + " id integer PRIMARY KEY,\n"
                + " name text NOT NULL,\n" + " capacity real\n" + ");";

        try {
            Connection conn = DriverManager.getConnection(url);
            Statement stmt = conn.createStatement();
            stmt.execute(sql);
            System.out.println("Create table finished.");
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        createNewTable();
    }

}

執行上面程式碼,得到以下結果 -

Create table finished.

執行上面程式碼後,將在java-sqlite.db資料庫中建立一個名稱為:employees 的表。

向表中插入記錄

建立表後,使用以下程式碼在表中插入一些記錄。 建立一個新的Java類:InsertRecords,具有以下程式碼:

package com.yiibai;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertRecords {

    private Connection connect() {
        // SQLite connection string
        String url = "jdbc:sqlite:D:/software/sqlite/java-sqlite.db";
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return conn;
    }

    public void insert(String name, double capacity) {
        String sql = "INSERT INTO employees(name, capacity) VALUES(?,?)";

        try {
            Connection conn = this.connect();
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            pstmt.setDouble(2, capacity);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void main(String[] args) {

        InsertRecords app = new InsertRecords();
        // insert three new rows
        app.insert("Maxsu", 30000);
        app.insert("Minsu", 40000);
        app.insert("Miswong", 50000);
        System.out.println("Insert data finished.");
    }

}

現在記錄被插入到表中。 可以使用SELECT命令檢視它:

sqlite> .open java-sqlite.db
sqlite> .tables
employees
sqlite> select * from employees;
id,name,capacity
1,Maxsu,30000.0
2,Minsu,40000.0
3,Miswong,50000.0
sqlite>
sqlite>

查詢/選擇記錄

要使用Java程式從表中選擇/查詢記錄,請使用以下程式碼。 建立一個新的Java類 - SelectRecords.java,使用以下程式碼 -

package com.yiibai;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectRecords {

    private Connection connect() {
        // SQLite connection string
        String url = "jdbc:sqlite:D:/software/sqlite/java-sqlite.db";
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return conn;
    }

    public void selectAll() {
        String sql = "SELECT * FROM employees";

        try {
            Connection conn = this.connect();
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);

            // loop through the result set
            while (rs.next()) {
                System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t" + rs.getDouble("capacity"));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        SelectRecords app = new SelectRecords();
        app.selectAll();
    }

}

執行上面程式碼,得到以下結果 -

注意: 因為都是通過使用相同的程式設計過程,所以您可自己編寫其它資料庫操作,比如:更新和刪除表中的資料等等。