Java中使用SQLite數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例
SQLite簡(jiǎn)介
SQLite 是一個(gè)開源的嵌入式關(guān)系數(shù)據(jù)庫(kù),實(shí)現(xiàn)了自給自足的、無(wú)服務(wù)器的、配置無(wú)需的、事務(wù)性的 SQL 數(shù)據(jù)庫(kù)引擎。它是一個(gè)零配置的數(shù)據(jù)庫(kù),這意味著與其他數(shù)據(jù)庫(kù)系統(tǒng)不同,比如 MySQL、PostgreSQL 等,SQLite 不需要在系統(tǒng)中設(shè)置和管理一個(gè)單獨(dú)的服務(wù)。這也使得 SQLite 是一種非常輕量級(jí)的數(shù)據(jù)庫(kù)解決方案,非常適合小型項(xiàng)目、嵌入式數(shù)據(jù)庫(kù)或者測(cè)試環(huán)境中。
SQLite 的一些主要特性包括:
- 無(wú)服務(wù)器的:SQLite 不是一個(gè)單獨(dú)的服務(wù)進(jìn)程,而是直接嵌入到應(yīng)用程序中。它直接讀取和寫入磁盤文件。
- 事務(wù)性的:SQLite 支持 ACID(原子性、一致性、隔離性、持久性)屬性,能夠確保所有事務(wù)都是安全、一致的,即使在系統(tǒng)崩潰或者電力中斷的情況下。
- 零配置的:SQLite 不需要任何配置或者管理,這使得它非常容易安裝和使用。
- 自包含的:SQLite 是一個(gè)自包含系統(tǒng),這意味著它幾乎不依賴其他任何外部系統(tǒng)或者庫(kù),這使得 SQLite 的跨平臺(tái)移植非常方便。
- 小型的:SQLite 非常小巧輕量,全功能的 SQLite 數(shù)據(jù)庫(kù)引擎的大小只有幾百KB。
- 廣泛應(yīng)用:SQLite 被廣泛應(yīng)用在各種各樣的產(chǎn)品和系統(tǒng)中,包括手機(jī)、平板電腦、嵌入式系統(tǒng)、物聯(lián)網(wǎng)設(shè)備等。它也被廣泛用于網(wǎng)站開發(fā)、科學(xué)研究、數(shù)據(jù)分析等領(lǐng)域。
在一些輕量級(jí)的應(yīng)用場(chǎng)景下,SQLite 是一個(gè)非常理想的選擇,因?yàn)樗?jiǎn)單、高效、易于使用和部署。然而,對(duì)于需要處理大量并發(fā)寫操作或者需要更高級(jí)的功能(如用戶管理或者存儲(chǔ)過程等)的應(yīng)用場(chǎng)景,更全功能的數(shù)據(jù)庫(kù)系統(tǒng)(如 PostgreSQL 或 MySQL)可能會(huì)是更好的選擇。
SQLite優(yōu)勢(shì)
為什么要用SQLite?
不需要一個(gè)單獨(dú)的服務(wù)器進(jìn)程或操作的系統(tǒng)(無(wú)服務(wù)器的)。
SQLite 不需要配置,這意味著不需要安裝或管理。
一個(gè)完整的 SQLite 數(shù)據(jù)庫(kù)是存儲(chǔ)在一個(gè)單一的跨平臺(tái)的磁盤文件。
SQLite 是非常小的,是輕量級(jí)的,完全配置時(shí)小于 400KiB,省略可選功能配置時(shí)小于250KiB。
SQLite 是自給自足的,這意味著不需要任何外部的依賴。
SQLite 事務(wù)是完全兼容 ACID 的,允許從多個(gè)進(jìn)程或線程安全訪問。
SQLite 支持 SQL92(SQL2)標(biāo)準(zhǔn)的大多數(shù)查詢語(yǔ)言的功能。
SQLite 使用 ANSI-C 編寫的,并提供了簡(jiǎn)單和易于使用的 API。
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運(yùn)行。
安裝 SQLite
此處省略。(本文主要講解如何在編程中使用SQLite)
基本使用
SQLite是一種輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它支持使用SQL語(yǔ)言進(jìn)行數(shù)據(jù)管理和查詢。以下是SQLite數(shù)據(jù)SQL語(yǔ)句的基本使用。
1. 創(chuàng)建表格
CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, ... );
例如,創(chuàng)建一個(gè)名為“students”的表格,包含學(xué)生的姓名和年齡字段:
CREATE TABLE students ( name VARCHAR(50) NOT NULL, age INT NOT NULL );
2. 插入數(shù)據(jù)
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
例如,向“students”表格插入一條學(xué)生記錄:
INSERT INTO students (name, age) VALUES ('John', 20);
3. 查詢數(shù)據(jù)
SELECT column1, column2, ... FROM table_name WHERE condition;
例如,查詢“students”表格中年齡大于等于18歲的學(xué)生:
SELECT name, age FROM students WHERE age >= 18;
4. 更新數(shù)據(jù)
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
例如,將“students”表格中年齡小于18歲的學(xué)生年齡更新為18歲:
UPDATE students SET age = 18 WHERE age < 18;
5. 刪除數(shù)據(jù)
DELETE FROM table_name WHERE condition;
例如,刪除“students”表格中姓名為“John”的學(xué)生記錄:
DELETE FROM students WHERE name = 'John';
以上是SQLite數(shù)據(jù)SQL語(yǔ)句的基本使用,可以用于創(chuàng)建表格、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)。詳細(xì)的SQL語(yǔ)句語(yǔ)法和功能,請(qǐng)參考SQLite官方文檔。SQLite 簡(jiǎn)介 | 菜鳥教程DB Browser for SQLite
Java使用SQLite
下面是一個(gè)使用Java和SQLite的示例:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class SQLiteExample { public static void main(String[] args) { try { // 連接到SQLite數(shù)據(jù)庫(kù) Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db"); // 創(chuàng)建一個(gè)Statement對(duì)象來執(zhí)行SQL查詢 Statement statement = connection.createStatement(); // 創(chuàng)建一個(gè)表 String createTableQuery = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)"; statement.execute(createTableQuery); // 插入一些數(shù)據(jù) String insertDataQuery = "INSERT INTO users (name, age) VALUES ('John', 25), ('Jane', 30), ('Mike', 35)"; statement.execute(insertDataQuery); // 查詢數(shù)據(jù) String selectDataQuery = "SELECT * FROM users"; ResultSet resultSet = statement.executeQuery(selectDataQuery); // 打印查詢結(jié)果 while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age); } // 關(guān)閉連接 resultSet.close(); statement.close(); connection.close(); } catch (Exception e) { System.err.println(e.getMessage()); } } }
在這個(gè)示例中,我們首先使用`DriverManager.getConnection()`方法連接到SQLite數(shù)據(jù)庫(kù)。然后,我們使用一個(gè)`Statement`對(duì)象來執(zhí)行SQL查詢。
我們創(chuàng)建了一個(gè)名為`users`的表,并插入了一些數(shù)據(jù)。然后,我們使用`SELECT`語(yǔ)句查詢表中的所有數(shù)據(jù),并使用`resultSet`迭代結(jié)果集并打印出來。
最后,我們關(guān)閉了`resultSet`,`statement`和`connection`對(duì)象,以確保資源的正確釋放。
Springboot使用SQLite
在使用Spring Boot開發(fā)項(xiàng)目時(shí),可以使用SQLite作為數(shù)據(jù)庫(kù)。SQLite是一種嵌入式數(shù)據(jù)庫(kù),它不需要獨(dú)立的服務(wù)端,數(shù)據(jù)庫(kù)文件可以直接嵌入到應(yīng)用程序中。
以下是一個(gè)使用Spring Boot和SQLite的示例:
1.添加依賴
首先,在pom.xml
文件中添加Spring Boot和SQLite的依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.30.1</version> </dependency>
2.配置數(shù)據(jù)庫(kù)
在application.properties
文件中,配置數(shù)據(jù)庫(kù)連接:
spring.datasource.url=jdbc:sqlite:mydatabase.db spring.jpa.database-platform=org.hibernate.dialect.SQLiteDialect
這里使用了名為mydatabase.db
的SQLite數(shù)據(jù)庫(kù)文件。
3.創(chuàng)建實(shí)體類
創(chuàng)建一個(gè)實(shí)體類,用于映射數(shù)據(jù)庫(kù)表:
@Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // getters and setters }
4.創(chuàng)建Repository接口
創(chuàng)建一個(gè)Repository接口,用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作:
public interface PersonRepository extends JpaRepository<Person, Long> { // 可以自定義查詢方法 }
5.創(chuàng)建控制器
創(chuàng)建一個(gè)控制器,用于處理HTTP請(qǐng)求:
@RestController public class PersonController { @Autowired private PersonRepository personRepository; @GetMapping("/persons") public List<Person> getAllPersons() { return personRepository.findAll(); } @PostMapping("/persons") public Person createPerson(@RequestBody Person person) { return personRepository.save(person); } // 其他操作方法 }
6.運(yùn)行應(yīng)用程序
最后,在Application
類中添加@SpringBootApplication
注解,并運(yùn)行應(yīng)用程序:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
現(xiàn)在,你可以通過發(fā)送HTTP請(qǐng)求來操作Person實(shí)體類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表了。
以上就是一個(gè)使用Spring Boot和SQLite的示例。你可以根據(jù)自己的需要,修改實(shí)體類、Repository接口和控制器,以適應(yīng)你的項(xiàng)目需求。
到此這篇關(guān)于Java中使用SQLite數(shù)據(jù)庫(kù)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Java使用SQLite數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中使用websocket出現(xiàn)404的解決方法
在Springboot中使用websocket時(shí),本地開發(fā)環(huán)境可以正常運(yùn)行,但部署到服務(wù)器環(huán)境出現(xiàn)404問題,所以本文小編講給大家詳細(xì)介紹一下SpringBoot中使用websocket出現(xiàn)404的解決方法,需要的朋友可以參考下2023-09-09easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼
這篇文章主要介紹了easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05java中struts2實(shí)現(xiàn)簡(jiǎn)單的文件上傳與下載
這篇文章主要為大家詳細(xì)介紹了java中struts2實(shí)現(xiàn)簡(jiǎn)單的文件上傳與下載的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-05-05Maven的配置文件pom.xml詳解(含常用plugin)
pom.xml是Maven項(xiàng)目的核心配置文件,它是 項(xiàng)目對(duì)象模型 - Project Object Model(POM)的縮寫,本文我們將全面解析pom.xml,了解其結(jié)構(gòu)和屬性,以及如何使用它來管理項(xiàng)目,感興趣的朋友跟隨小編一起看看吧2024-08-08SpringBoot中的PropertySource原理詳解
這篇文章主要介紹了SpringBoot中的PropertySource原理詳解,PropertySource?是一個(gè)非常重要的概念,它允許您在應(yīng)用程序中定義屬性,并將這些屬性注入到?Spring?環(huán)境中,需要的朋友可以參考下2023-07-07Mybatis?mysql模糊查詢方式(CONCAT多個(gè)字段)及bug
這篇文章主要介紹了Mybatis?mysql模糊查詢方式(CONCAT多個(gè)字段)及bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01springboot整合mqtt實(shí)現(xiàn)消息訂閱和推送功能
mica-mqtt-client-spring-boot-starter是一個(gè)方便、高效、可靠的MQTT客戶端啟動(dòng)器,適用于需要使用MQTT協(xié)議進(jìn)行消息通信的Spring Boot應(yīng)用程序,這篇文章主要介紹了springboot整合mqtt實(shí)現(xiàn)消息訂閱和推送功能,需要的朋友可以參考下2024-02-02