青少年编程与数学 02-012 SQLite 数据库简介 04课题、数据库应用
- 一、Python
- 二、Java
- 三、C#
- 四、JavaScript(Node.js)
- 五、PHP
- 六、Android(Java/Kotlin)
- 七、iOS(Swift)
- 八、Go
课题摘要: SQLite 在各种编程语言中的应用非常广泛,本文是一些常见编程语言中使用 SQLite 的基本方法和示例。
SQLite 在各种编程语言中的应用非常广泛,以下是一些常见编程语言中使用 SQLite 的基本方法和示例:
一、Python
Python 通过内置的 sqlite3
模块来支持 SQLite 数据库操作,使用起来非常方便。
-
连接数据库
Python复制
import sqlite3# 连接到 SQLite 数据库 # 如果文件不存在,会自动在当前目录创建一个数据库文件 conn = sqlite3.connect('example.db')
-
创建表
Python复制
c = conn.cursor()# 创建一个表 c.execute('''CREATE TABLE stocks(date text, trans text, symbol text, qty real, price real)''')
-
插入数据
Python复制
# 插入一行数据 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
-
查询数据
Python复制
# 执行查询 c.execute('SELECT * FROM stocks ORDER BY price') for row in c.fetchall():print(row)
-
提交事务和关闭连接
Python复制
# 提交事务 conn.commit()# 关闭连接 conn.close()
二、Java
在 Java 中,可以使用 JDBC(Java Database Connectivity)来连接和操作 SQLite 数据库。
-
添加 SQLite JDBC 驱动 首先需要在项目中添加 SQLite JDBC 驱动,可以通过 Maven 依赖来添加:
xml复制
<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version> </dependency>
-
连接数据库
java复制
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;// 加载驱动 Class.forName("org.sqlite.JDBC"); // 连接到数据库 Connection conn = DriverManager.getConnection("jdbc:sqlite:example.db");
-
创建表和插入数据
java复制
Statement stmt = conn.createStatement(); stmt.execute("CREATE TABLE IF NOT EXISTS stocks (date TEXT, trans TEXT, symbol TEXT, qty REAL, price REAL)"); stmt.execute("INSERT INTO stocks VALUES ('2006-01-05', 'BUY', 'RHAT', 100, 35.14)");
-
查询数据
java复制
ResultSet rs = stmt.executeQuery("SELECT * FROM stocks"); while (rs.next()) {System.out.println(rs.getString("date") + " " + rs.getString("trans")); }
-
关闭连接
java复制
conn.close();
三、C#
在 C# 中,可以使用 System.Data.SQLite
库来操作 SQLite 数据库。
-
安装 SQLite 库 可以通过 NuGet 包管理器安装:
Shell复制
Install-Package System.Data.SQLite
-
连接数据库
csharp复制
using System.Data.SQLite;// 创建连接 SQLiteConnection conn = new SQLiteConnection("Data Source=example.db;Version=3;"); conn.Open();
-
创建表和插入数据
csharp复制
SQLiteCommand cmd = new SQLiteCommand(conn); cmd.CommandText = "CREATE TABLE IF NOT EXISTS stocks (date TEXT, trans TEXT, symbol TEXT, qty REAL, price REAL)"; cmd.ExecuteNonQuery();cmd.CommandText = "INSERT INTO stocks VALUES ('2006-01-05', 'BUY', 'RHAT', 100, 35.14)"; cmd.ExecuteNonQuery();
-
查询数据
csharp复制
cmd.CommandText = "SELECT * FROM stocks"; SQLiteDataReader reader = cmd.ExecuteReader(); while (reader.Read()) {Console.WriteLine(reader["date"] + " " + reader["trans"]); }
-
关闭连接
csharp复制
conn.Close();
四、JavaScript(Node.js)
在 Node.js 中,可以使用 sqlite3
模块来操作 SQLite 数据库。
-
安装 sqlite3 模块
Shell复制
npm install sqlite3
-
连接数据库
JavaScript复制
const sqlite3 = require('sqlite3').verbose(); let db = new sqlite3.Database('example.db');
-
创建表和插入数据
JavaScript复制
db.run("CREATE TABLE IF NOT EXISTS stocks (date TEXT, trans TEXT, symbol TEXT, qty REAL, price REAL)"); db.run("INSERT INTO stocks VALUES ('2006-01-05', 'BUY', 'RHAT', 100, 35.14)");
-
查询数据
JavaScript复制
db.all("SELECT * FROM stocks", [], (err, rows) => {rows.forEach((row) => {console.log(row.date + " " + row.trans);}); });
-
关闭连接
JavaScript复制
db.close();
五、PHP
在 PHP 中,可以使用 PDO(PHP Data Objects)扩展来连接和操作 SQLite 数据库。
-
连接数据库
php复制
$db = new PDO('sqlite:example.db');
-
创建表和插入数据
php复制
$db->exec("CREATE TABLE IF NOT EXISTS stocks (date TEXT, trans TEXT, symbol TEXT, qty REAL, price REAL)"); $db->exec("INSERT INTO stocks VALUES ('2006-01-05', 'BUY', 'RHAT', 100, 35.14)");
-
查询数据
php复制
$stmt = $db->query('SELECT * FROM stocks'); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {echo $row['date'] . " " . $row['trans'] . "\n"; }
-
关闭连接
php复制
$db = null;
六、Android(Java/Kotlin)
在 Android 开发中,SQLite 是常用的数据存储方式之一。
-
创建数据库帮助类
java复制
public class DBHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "example.db";private static final int DATABASE_VERSION = 1;public DBHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE stocks (date TEXT, trans TEXT, symbol TEXT, qty REAL, price REAL)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 处理数据库升级逻辑} }
-
插入数据
java复制
DBHelper dbHelper = new DBHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("date", "2006-01-05"); values.put("trans", "BUY"); values.put("symbol", "RHAT"); values.put("qty", 100); values.put("price", 35.14); db.insert("stocks", null, values);
-
查询数据
java复制
Cursor cursor = db.query("stocks", null, null, null, null, null, null); while (cursor.moveToNext()) {String date = cursor.getString(cursor.getColumnIndex("date"));String trans = cursor.getString(cursor.getColumnIndex("trans"));System.out.println(date + " " + trans); } cursor.close();
-
关闭数据库
java复制
db.close();
七、iOS(Swift)
在 iOS 开发中,可以使用 SQLite.swift 库来操作 SQLite 数据库。
-
安装 SQLite.swift 可以通过 CocoaPods 安装:
ruby复制
pod 'SQLite.swift', '~> 0.13.0'
-
连接数据库
swift复制
import SQLitelet dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/example.db" let db = try Connection(dbPath)
-
创建表和插入数据
swift复制
let stocks = Table("stocks") let date = Expression<String>("date") let trans = Expression<String>("trans") let symbol = Expression<String>("symbol") let qty = Expression<Double>("qty") let price = Expression<Double>("price")try db.run(stocks.create { t int.column(date)t.column(trans)t.column(symbol)t.column(qty)t.column(price) })try db.run(stocks.insert(date <- "2006-01-05", trans <- "BUY", symbol <- "RHAT", qty <- 100, price <- 35.14))
-
查询数据
swift复制
for stock in try db.prepare(stocks) {print(stock[date], stock[trans]) }
-
关闭连接
swift复制
db.close()
这些示例展示了在不同编程语言中使用 SQLite 的基本方法,包括连接数据库、创建表、插入数据、查询数据和关闭连接。SQLite 的简单性和灵活性使其成为许多轻量级应用程序的首选数据库解决方案。
好的,以下是 Go 语言中使用 SQLite 的基本方法和示例。
八、Go
在 Go 语言中,可以使用 database/sql
标准库结合 github.com/mattn/go-sqlite3
这个第三方驱动来操作 SQLite 数据库。
-
安装 SQLite 驱动 首先需要安装
go-sqlite3
驱动,可以通过以下命令安装:Shell复制
go get -u github.com/mattn/go-sqlite3
-
连接数据库
go复制
package mainimport ("database/sql""fmt""log"_ "github.com/mattn/go-sqlite3" )func main() {// 连接到 SQLite 数据库// 如果文件不存在,会自动在当前目录创建一个数据库文件db, err := sql.Open("sqlite3", "./example.db")if err != nil {log.Fatal(err)}defer db.Close() }
-
创建表
go复制
_, err := db.Exec(`CREATE TABLE IF NOT EXISTS stocks (date TEXT,trans TEXT,symbol TEXT,qty REAL,price REAL )`) if err != nil {log.Fatal(err) }
-
插入数据
go复制
// 插入一行数据 _, err = db.Exec("INSERT INTO stocks (date, trans, symbol, qty, price) VALUES (?, ?, ?, ?, ?)", "2006-01-05", "BUY", "RHAT", 100, 35.14) if err != nil {log.Fatal(err) }
-
查询数据
go复制
rows, err := db.Query("SELECT date, trans, symbol, qty, price FROM stocks") if err != nil {log.Fatal(err) } defer rows.Close()for rows.Next() {var date, trans, symbol stringvar qty float64var price float64if err := rows.Scan(&date, &trans, &symbol, &qty, &price); err != nil {log.Fatal(err)}fmt.Println(date, trans, symbol, qty, price) }
-
处理查询错误
go复制
if err = rows.Err(); err != nil {log.Fatal(err) }
-
关闭连接
go复制
db.Close()
完整示例
将上述代码片段组合成一个完整的示例:
go复制
package mainimport ("database/sql""fmt""log"_ "github.com/mattn/go-sqlite3"
)func main() {// 连接到 SQLite 数据库// 如果文件不存在,会自动在当前目录创建一个数据库文件db, err := sql.Open("sqlite3", "./example.db")if err != nil {log.Fatal(err)}defer db.Close()// 创建表_, err = db.Exec(`CREATE TABLE IF NOT EXISTS stocks (date TEXT,trans TEXT,symbol TEXT,qty REAL,price REAL)`)if err != nil {log.Fatal(err)}// 插入一行数据_, err = db.Exec("INSERT INTO stocks (date, trans, symbol, qty, price) VALUES (?, ?, ?, ?, ?)", "2006-01-05", "BUY", "RHAT", 100, 35.14)if err != nil {log.Fatal(err)}// 查询数据rows, err := db.Query("SELECT date, trans, symbol, qty, price FROM stocks")if err != nil {log.Fatal(err)}defer rows.Close()for rows.Next() {var date, trans, symbol stringvar qty float64var price float64if err := rows.Scan(&date, &trans, &symbol, &qty, &price); err != nil {log.Fatal(err)}fmt.Println(date, trans, symbol, qty, price)}// 处理查询错误if err = rows.Err(); err != nil {log.Fatal(err)}
}
这个示例展示了如何在 Go 语言中连接 SQLite 数据库、创建表、插入数据和查询数据。通过使用 database/sql
标准库和 go-sqlite3
驱动,可以方便地进行 SQLite 数据库操作。