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

发布于:2025-03-28 ⋅ 阅读:(23) ⋅ 点赞:(0)

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

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


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

一、Python

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

  1. 连接数据库

    Python复制

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

    Python复制

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

    Python复制

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

    Python复制

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

    Python复制

    # 提交事务
    conn.commit()
    
    # 关闭连接
    conn.close()
    

二、Java

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

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

    xml复制

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

    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复制

    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复制

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

    java复制

    conn.close();
    

三、C#

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

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

    Shell复制

    Install-Package System.Data.SQLite
    
  2. 连接数据库

    csharp复制

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

    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复制

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

    csharp复制

    conn.Close();
    

四、JavaScript(Node.js)

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

  1. 安装 sqlite3 模块

    Shell复制

    npm install sqlite3
    
  2. 连接数据库

    JavaScript复制

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

    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复制

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

    JavaScript复制

    db.close();
    

五、PHP

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

  1. 连接数据库

    php复制

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

    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复制

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

    php复制

    $db = null;
    

六、Android(Java/Kotlin)

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

  1. 创建数据库帮助类

    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复制

    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复制

    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复制

    db.close();
    

七、iOS(Swift)

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

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

    ruby复制

    pod 'SQLite.swift', '~> 0.13.0'
    
  2. 连接数据库

    swift复制

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

    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复制

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

    swift复制

    db.close()
    

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

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

八、Go

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

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

    Shell复制

    go get -u github.com/mattn/go-sqlite3
    
  2. 连接数据库

    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复制

    _, 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复制

    // 插入一行数据
    _, 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复制

    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复制

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

    go复制

    db.Close()
    

完整示例

将上述代码片段组合成一个完整的示例:

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 数据库操作。