check.go 885 字节
Newer Older
Y
Your Name 已提交
1 2 3 4 5 6 7 8
package updater

import (
	SQL "database/sql"
	"fmt"
)

//IsTableExist 检查table是否存在
Y
Your Name 已提交
9 10
func (d *Dao)IsTableExist(name string) bool {
	db := d.db
Y
Your Name 已提交
11 12 13 14 15 16 17 18 19 20
	selectType := ""
	sql := "SELECT type FROM sqlite_master WHERE `type` = 'table' AND `name` = ?"
	err := db.QueryRow(sql, name).Scan(&selectType)
	if err != nil {
		return false
	}
	return true
}

//IsColumnExist 检查列是否存在
Y
Your Name 已提交
21 22
func (d *Dao)IsColumnExist(name string, column string) bool {
	db := d.db
Y
Your Name 已提交
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
	sql := fmt.Sprintf("PRAGMA table_info(%s)", name)
	rows, err := db.Query(sql)
	if err != nil {
		panic(err)
		return false
	}
	defer rows.Close()
	for rows.Next() {
		var cID, notNull, pk int
		var name, columnType string
		var dfltValue SQL.NullString
		err = rows.Scan(&cID, &name, &columnType, &notNull, &dfltValue, &pk)
		if err != nil {
			return false
		}
		if name == column {
			return true
		}
	}
	return false
}