青少年编程与数学 02-012 SQLite 数据库简介 04课题、数据库应用
课题摘要: SQLite 在各种编程语言中的应用非常广泛,本文是一些常见编程语言中使用 SQLite 的基本方法和示例。
SQLite 在各种编程语言中的应用非常广泛,以下是一些常见编程语言中使用 SQLite 的基本方法和示例:
一、Python
Python 通过内置的 sqlite3
模块来支持 SQLite 数据库操作,使用起来非常方便。
-
连接数据库
Python复制
pythonimport sqlite3 # 连接到 SQLite 数据库 # 如果文件不存在,会自动在当前目录创建一个数据库文件 conn = sqlite3.connect('example.db')
-
创建表
Python复制
pythonc = conn.cursor() # 创建一个表 c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''')
-
插入数据
Python复制
python# 插入一行数据 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
-
查询数据
Python复制
python# 执行查询 c.execute('SELECT * FROM stocks ORDER BY price') for row in c.fetchall(): print(row)
-
提交事务和关闭连接
Python复制
python# 提交事务 conn.commit() # 关闭连接 conn.close()
二、Java
在 Java 中,可以使用 JDBC(Java Database Connectivity)来连接和操作 SQLite 数据库。
-
添加 SQLite JDBC 驱动 首先需要在项目中添加 SQLite JDBC 驱动,可以通过 Maven 依赖来添加:
xml复制
xml<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.36.0.3</version> </dependency>
-
连接数据库
java复制
javaimport 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复制
javaStatement 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复制
javaResultSet rs = stmt.executeQuery("SELECT * FROM stocks"); while (rs.next()) { System.out.println(rs.getString("date") + " " + rs.getString("trans")); }
-
关闭连接
java复制
javaconn.close();
三、C#
在 C# 中,可以使用 System.Data.SQLite
库来操作 SQLite 数据库。
-
安装 SQLite 库 可以通过 NuGet 包管理器安装:
Shell复制
shellInstall-Package System.Data.SQLite
-
连接数据库
csharp复制
csharpusing System.Data.SQLite; // 创建连接 SQLiteConnection conn = new SQLiteConnection("Data Source=example.db;Version=3;"); conn.Open();
-
创建表和插入数据
csharp复制
csharpSQLiteCommand 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复制
csharpcmd.CommandText = "SELECT * FROM stocks"; SQLiteDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader["date"] + " " + reader["trans"]); }
-
关闭连接
csharp复制
csharpconn.Close();
四、JavaScript(Node.js)
在 Node.js 中,可以使用 sqlite3
模块来操作 SQLite 数据库。
-
安装 sqlite3 模块
Shell复制
shellnpm install sqlite3
-
连接数据库
JavaScript复制
javascriptconst sqlite3 = require('sqlite3').verbose(); let db = new sqlite3.Database('example.db');
-
创建表和插入数据
JavaScript复制
javascriptdb.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复制
javascriptdb.all("SELECT * FROM stocks", [], (err, rows) => { rows.forEach((row) => { console.log(row.date + " " + row.trans); }); });
-
关闭连接
JavaScript复制
javascriptdb.close();
五、PHP
在 PHP 中,可以使用 PDO(PHP Data Objects)扩展来连接和操作 SQLite 数据库。
-
连接数据库
php复制
php$db = new PDO('sqlite:example.db');
-
创建表和插入数据
php复制
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复制
php$stmt = $db->query('SELECT * FROM stocks'); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row['date'] . " " . $row['trans'] . "\n"; }
-
关闭连接
php复制
php$db = null;
六、Android(Java/Kotlin)
在 Android 开发中,SQLite 是常用的数据存储方式之一。
-
创建数据库帮助类
java复制
javapublic 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); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE stocks (date TEXT, trans TEXT, symbol TEXT, qty REAL, price REAL)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 处理数据库升级逻辑 } }
-
插入数据
java复制
javaDBHelper 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复制
javaCursor 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复制
javadb.close();
七、iOS(Swift)
在 iOS 开发中,可以使用 SQLite.swift 库来操作 SQLite 数据库。
-
安装 SQLite.swift 可以通过 CocoaPods 安装:
ruby复制
rubypod 'SQLite.swift', '~> 0.13.0'
-
连接数据库
swift复制
swiftimport SQLite let dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/example.db" let db = try Connection(dbPath)
-
创建表和插入数据
swift复制
swiftlet 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 in t.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复制
swiftfor stock in try db.prepare(stocks) { print(stock[date], stock[trans]) }
-
关闭连接
swift复制
swiftdb.close()
这些示例展示了在不同编程语言中使用 SQLite 的基本方法,包括连接数据库、创建表、插入数据、查询数据和关闭连接。SQLite 的简单性和灵活性使其成为许多轻量级应用程序的首选数据库解决方案。
好的,以下是 Go 语言中使用 SQLite 的基本方法和示例。
八、Go
在 Go 语言中,可以使用 database/sql
标准库结合 github.com/mattn/go-sqlite3
这个第三方驱动来操作 SQLite 数据库。
-
安装 SQLite 驱动 首先需要安装
go-sqlite3
驱动,可以通过以下命令安装:Shell复制
shellgo get -u github.com/mattn/go-sqlite3
-
连接数据库
go复制
gopackage main import ( "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复制
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复制
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复制
gorows, 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 string var qty float64 var price float64 if err := rows.Scan(&date, &trans, &symbol, &qty, &price); err != nil { log.Fatal(err) } fmt.Println(date, trans, symbol, qty, price) }
-
处理查询错误
go复制
goif err = rows.Err(); err != nil { log.Fatal(err) }
-
关闭连接
go复制
godb.Close()
完整示例
将上述代码片段组合成一个完整的示例:
go复制
go
package main
import (
"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 string
var qty float64
var price float64
if 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 数据库操作。