青少年编程与数学 02-012 SQLite 数据库简介 04课题、数据库应用

青少年编程与数学 02-012 SQLite 数据库简介 04课题、数据库应用

课题摘要: SQLite 在各种编程语言中的应用非常广泛,本文是一些常见编程语言中使用 SQLite 的基本方法和示例。


SQLite 在各种编程语言中的应用非常广泛,以下是一些常见编程语言中使用 SQLite 的基本方法和示例:

一、Python

Python 通过内置的 sqlite3 模块来支持 SQLite 数据库操作,使用起来非常方便。

  1. 连接数据库

    Python复制

    python 复制代码
    import sqlite3
    
    # 连接到 SQLite 数据库
    # 如果文件不存在,会自动在当前目录创建一个数据库文件
    conn = sqlite3.connect('example.db')
  2. 创建表

    Python复制

    python 复制代码
    c = conn.cursor()
    
    # 创建一个表
    c.execute('''CREATE TABLE stocks
                 (date text, trans text, symbol text, qty real, price real)''')
  3. 插入数据

    Python复制

    python 复制代码
    # 插入一行数据
    c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
  4. 查询数据

    Python复制

    python 复制代码
    # 执行查询
    c.execute('SELECT * FROM stocks ORDER BY price')
    for row in c.fetchall():
        print(row)
  5. 提交事务和关闭连接

    Python复制

    python 复制代码
    # 提交事务
    conn.commit()
    
    # 关闭连接
    conn.close()

二、Java

在 Java 中,可以使用 JDBC(Java Database Connectivity)来连接和操作 SQLite 数据库。

  1. 添加 SQLite JDBC 驱动 首先需要在项目中添加 SQLite JDBC 驱动,可以通过 Maven 依赖来添加:

    xml复制

    xml 复制代码
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.36.0.3</version>
    </dependency>
  2. 连接数据库

    java复制

    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");
  3. 创建表和插入数据

    java复制

    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)");
  4. 查询数据

    java复制

    java 复制代码
    ResultSet rs = stmt.executeQuery("SELECT * FROM stocks");
    while (rs.next()) {
        System.out.println(rs.getString("date") + " " + rs.getString("trans"));
    }
  5. 关闭连接

    java复制

    java 复制代码
    conn.close();

三、C#

在 C# 中,可以使用 System.Data.SQLite 库来操作 SQLite 数据库。

  1. 安装 SQLite 库 可以通过 NuGet 包管理器安装:

    Shell复制

    shell 复制代码
    Install-Package System.Data.SQLite
  2. 连接数据库

    csharp复制

    csharp 复制代码
    using System.Data.SQLite;
    
    // 创建连接
    SQLiteConnection conn = new SQLiteConnection("Data Source=example.db;Version=3;");
    conn.Open();
  3. 创建表和插入数据

    csharp复制

    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();
  4. 查询数据

    csharp复制

    csharp 复制代码
    cmd.CommandText = "SELECT * FROM stocks";
    SQLiteDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        Console.WriteLine(reader["date"] + " " + reader["trans"]);
    }
  5. 关闭连接

    csharp复制

    csharp 复制代码
    conn.Close();

四、JavaScript(Node.js)

在 Node.js 中,可以使用 sqlite3 模块来操作 SQLite 数据库。

  1. 安装 sqlite3 模块

    Shell复制

    shell 复制代码
    npm install sqlite3
  2. 连接数据库

    JavaScript复制

    javascript 复制代码
    const sqlite3 = require('sqlite3').verbose();
    let db = new sqlite3.Database('example.db');
  3. 创建表和插入数据

    JavaScript复制

    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)");
  4. 查询数据

    JavaScript复制

    javascript 复制代码
    db.all("SELECT * FROM stocks", [], (err, rows) => {
        rows.forEach((row) => {
            console.log(row.date + " " + row.trans);
        });
    });
  5. 关闭连接

    JavaScript复制

    javascript 复制代码
    db.close();

五、PHP

在 PHP 中,可以使用 PDO(PHP Data Objects)扩展来连接和操作 SQLite 数据库。

  1. 连接数据库

    php复制

    php 复制代码
    $db = new PDO('sqlite:example.db');
  2. 创建表和插入数据

    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)");
  3. 查询数据

    php复制

    php 复制代码
    $stmt = $db->query('SELECT * FROM stocks');
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['date'] . " " . $row['trans'] . "\n";
    }
  4. 关闭连接

    php复制

    php 复制代码
    $db = null;

六、Android(Java/Kotlin)

在 Android 开发中,SQLite 是常用的数据存储方式之一。

  1. 创建数据库帮助类

    java复制

    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);
        }
    
        @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) {
            // 处理数据库升级逻辑
        }
    }
  2. 插入数据

    java复制

    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);
  3. 查询数据

    java复制

    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();
  4. 关闭数据库

    java复制

    java 复制代码
    db.close();

七、iOS(Swift)

在 iOS 开发中,可以使用 SQLite.swift 库来操作 SQLite 数据库。

  1. 安装 SQLite.swift 可以通过 CocoaPods 安装:

    ruby复制

    ruby 复制代码
    pod 'SQLite.swift', '~> 0.13.0'
  2. 连接数据库

    swift复制

    swift 复制代码
    import SQLite
    
    let dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/example.db"
    let db = try Connection(dbPath)
  3. 创建表和插入数据

    swift复制

    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 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))
  4. 查询数据

    swift复制

    swift 复制代码
    for stock in try db.prepare(stocks) {
        print(stock[date], stock[trans])
    }
  5. 关闭连接

    swift复制

    swift 复制代码
    db.close()

这些示例展示了在不同编程语言中使用 SQLite 的基本方法,包括连接数据库、创建表、插入数据、查询数据和关闭连接。SQLite 的简单性和灵活性使其成为许多轻量级应用程序的首选数据库解决方案。

好的,以下是 Go 语言中使用 SQLite 的基本方法和示例。

八、Go

在 Go 语言中,可以使用 database/sql 标准库结合 github.com/mattn/go-sqlite3 这个第三方驱动来操作 SQLite 数据库。

  1. 安装 SQLite 驱动 首先需要安装 go-sqlite3 驱动,可以通过以下命令安装:

    Shell复制

    shell 复制代码
    go get -u github.com/mattn/go-sqlite3
  2. 连接数据库

    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()
    }
  3. 创建表

    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)
    }
  4. 插入数据

    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)
    }
  5. 查询数据

    go复制

    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 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)
    }
  6. 处理查询错误

    go复制

    go 复制代码
    if err = rows.Err(); err != nil {
        log.Fatal(err)
    }
  7. 关闭连接

    go复制

    go 复制代码
    db.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 数据库操作。

相关推荐
TDengine (老段)2 分钟前
TDengine 集群容错与灾备
大数据·运维·数据库·oracle·时序数据库·tdengine·涛思数据
Lao A(zhou liang)的菜园1 小时前
高效DBA的日常运维主题沙龙
运维·数据库·dba
迪迦不喝可乐1 小时前
mysql知识点
数据库·mysql
不太可爱的大白2 小时前
MySQL 事务的 ACID 四大特性及其实现原理
数据库·mysql
观测云3 小时前
HikariCP 可观测性最佳实践
数据库
文牧之3 小时前
PostgreSQL的扩展 dblink
运维·数据库·postgresql
趁你还年轻_3 小时前
Redis-旁路缓存策略详解
数据库·redis·缓存
在云上(oncloudai)4 小时前
AWS DocumentDB vs MongoDB:数据库的技术抉择
数据库·mongodb·aws
夕泠爱吃糖4 小时前
MySQL范式和反范式
数据库·mysql
时序数据说6 小时前
时序数据库IoTDB与EdgeX Foundry集成适配服务介绍
大数据·数据库·开源·时序数据库·iotdb