golang编写一个类似sqlite的文件数据库实现增删改查动态改变表结构代码

代码语言:golang

所属分类:其他

代码描述:golang编写一个类似sqlite的文件数据库实现增删改查动态改变表结构代码,实现createtable、insert、update、select、delete,id自增、动态改变表结构等数据库特性,仅供学习。

代码标签: golang 编写 类似 sqlite 文件 数据库 增删 改查 代码 动态 改变 结构

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

package main
//需要在go1.16以上版本运行
import (
    "fmt"
    "os"
    "encoding/gob"
    "sync"
    "reflect"
    "bytes"
)

type Database struct {
    filename string
    tables   map[string]*Table
    mutex    sync.RWMutex
}

type Table struct {
    Name    string
    Schema  map[string]string // 使用字符串来表示类型
    Rows    []map[string]interface{}
    NextID  int
}

type SerializableDatabase struct {
    Tables map[string]*Table
}

func (db *Database) MarshalBinary() ([]byte, error) {
    sdb := SerializableDatabase{
        Tables: db.tables,
    }
    var buf bytes.Buffer
    enc := gob.NewEncoder(&buf)
    err := enc.Encode(sdb)
    return buf.Bytes(), err
}

func (db *Database) UnmarshalBinary(data []byte) error {
    var sdb SerializableDatabase
    buf := bytes.NewBuffer(data)
    dec := gob.NewDecoder(buf)
    err := dec.D.........完整代码请登录后点击上方下载按钮下载查看

网友评论0