Java操作Sqlite数据库

1.介绍

SQLite是一个进程内的库,实现了自给自足的、无服务器的零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其它数据库不同,不需要在系统中配置。
就像其它数据库,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite直接访问其存储文件。

2.特点

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite不需要配置,这意味着不需要安装或管理。
  • 一个完整的SQLite数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite可在UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

3.Java操作Sqlite

sqlite-jdbc 库下载 sqlite-jdbc-(VERSION).jar 的最新版本。或者从maven仓库下载。
在class 路径中添加下载的 jar 文件 sqlite-jdbc-(VERSION).jar

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class SQLiteJDBCUtils {

   Connection c;
   Statement stmt;

   /**
    * 连接到一个现有的数据库。如果数据库不存在, 那么它就会被创建,最后将返回一个数据库对象。
    */
   @Before
   public void before() {
       try {
           Class.forName("org.sqlite.JDBC");
           c = DriverManager.getConnection("jdbc:sqlite:C:\\db\\test.db");
           System.out.println("Opened database successfully");
           stmt = c.createStatement();
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

   @After
   public void after() {
       try {
           stmt.close();
           c.close();
       } catch (SQLException e) {
           e.printStackTrace();
       }
   }

   @Test
   public void createTable() throws SQLException {
       String sql = "CREATE TABLE COMPANY " 
                   + "(ID INT PRIMARY KEY NOT NULL,"
                   + " NAME TEXT NOT NULL," 
                   + " AGE INT NOT NULL,"
                   + " ADDRESS CHAR(50)," 
                   + " SALARY REAL)";
       stmt.executeUpdate(sql);
   }

   @Test
   public void insert() throws SQLException {
       c.setAutoCommit(false);
       StringBuffer sb = new StringBuffer();
       sb.append("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (1, 'Paul', 32, 'California', 20000.00 );\n");
       sb.append("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " 
               + "VALUES (2, 'Allen', 25, 'Texas', 15000.00 );\n");
       sb.append("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );\n");
       sb.append("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
               + "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );");
       stmt.executeUpdate(sb.toString());
       c.commit();
   }

   @Test
   public void select() throws SQLException {
       ResultSet rs = stmt.executeQuery("SELECT * FROM COMPANY;");
       while (rs.next()) {
          int id = rs.getInt("id");
          String name = rs.getString("name");
          int age = rs.getInt("age");
          String address = rs.getString("address");
          float salary = rs.getFloat("salary");
          System.out.println("ID = " + id);
          System.out.println("NAME = " + name);
          System.out.println("AGE = " + age);
          System.out.println("ADDRESS = " + address);
          System.out.println("SALARY = " + salary);
          System.out.println("--------");
       }
       rs.close();
   }

   @Test
   public void update() throws SQLException {
       c.setAutoCommit(false);
       String sql = "UPDATE COMPANY set SALARY = 25000.00 where ID=1;";
       stmt.executeUpdate(sql);
       c.commit();

       ResultSet rs = stmt.executeQuery("SELECT * FROM COMPANY;");
       while (rs.next()) {
          int id = rs.getInt("id");
          String name = rs.getString("name");
          int age = rs.getInt("age");
          String address = rs.getString("address");
          float salary = rs.getFloat("salary");
          System.out.println("ID = " + id);
          System.out.println("NAME = " + name);
          System.out.println("AGE = " + age);
          System.out.println("ADDRESS = " + address);
          System.out.println("SALARY = " + salary);
          System.out.println("--------");
       }
       rs.close();
   }

   @Test
   public void delete() throws SQLException {
       c.setAutoCommit(false);
       String sql = "DELETE from COMPANY where ID=2;";
       stmt.executeUpdate(sql);
       c.commit();

       ResultSet rs = stmt.executeQuery("SELECT * FROM COMPANY;");
       while (rs.next()) {
          int id = rs.getInt("id");
          String name = rs.getString("name");
          int age = rs.getInt("age");
          String address = rs.getString("address");
          float salary = rs.getFloat("salary");
          System.out.println("ID = " + id);
          System.out.println("NAME = " + name);
          System.out.println("AGE = " + age);
          System.out.println("ADDRESS = " + address);
          System.out.println("SALARY = " + salary);
          System.out.println("--------");
       }
       rs.close();
   }

}

SQLite数据库语法和MySQL、Oracle等关系型数据库类似,具体使用及操作参考:
SQLite教程

Java可以通过使用JDBC(Java Database Connectivity)和SQLite JDBC驱动程序来创建SQLite数据库。 首先,确保在Java项目中包含SQLite JDBC驱动程序的JAR文件。你可以从SQLite官方网站下载最新的驱动程序。 然后,编写创建数据库Java代码。以下是一个简单的例子: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateSQLiteDatabase { public static void main(String[] args) { Connection connection = null; Statement statement = null; try { // 加载SQLite JDBC驱动 Class.forName("org.sqlite.JDBC"); // 连接到SQLite数据库 connection = DriverManager.getConnection("jdbc:sqlite:/path/to/database.db"); // 创建一个Statement对象 statement = connection.createStatement(); // 执行创建数据库的SQL语句 String sql = "CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)"; statement.executeUpdate(sql); System.out.println("数据库创建成功!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库资源 try { if (statement != null) statement.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在上面的例子中,我们首先加载SQLite JDBC驱动(通过`Class.forName("org.sqlite.JDBC")`)。 然后使用`DriverManager.getConnection("jdbc:sqlite:/path/to/database.db")`连接到SQLite数据库。 创建一个Statement对象,然后使用`statement.executeUpdate(sql)`执行创建数据库的SQL语句。 最后,关闭连接和Statement对象。 以上是使用Java创建SQLite数据库的简单示例。你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值