|
|
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace AppTime
- {
- /**
- * 初始化数据库
- */
- class InitDB
- {
- private DB db;
-
- public InitDB()
- {
- db = DB.Instance;
- }
-
- public void Start()
- {
- // 创建数据表
-
- db.Execute("CREATE TABLE IF NOT EXISTS \"app\" (\"id\" INTEGER NOT NULL, \"process\" text NOT NULL," +
- "\"text\" TEXT NOT NULL DEFAULT process, " +
- "\"tagId\" INTEGER NOT NULL DEFAULT(0), " +
- "PRIMARY KEY(\"id\") ) WITHOUT ROWID");
-
- db.Execute("CREATE TABLE IF NOT EXISTS \"period\" ( \"timeStart\" DATETIME NOT NULL, \"timeEnd\" DATETIME NOT NULL, " +
- "\"winId\" INTEGER NOT NULL," +
- "PRIMARY KEY(\"timeStart\")," +
- "UNIQUE(\"timeStart\" ASC) )WITHOUT ROWID");
-
- db.Execute("CREATE TABLE IF NOT EXISTS \"tag\" ( \"id\" INTEGER NOT NULL, \"text\" TEXT NOT NULL," +
- "PRIMARY KEY(\"id\"), UNIQUE(\"id\" ASC), UNIQUE(\"text\" ASC) ) WITHOUT ROWID");
-
- db.Execute("CREATE TABLE IF NOT EXISTS \"win\" (\"id\" INTEGER NOT NULL," +
- "\"appId\" INTEGER NOT NULL, \"text\" TEXT NOT NULL, " +
- "\"tagId\" INTEGER NOT NULL DEFAULT(0), " +
- "PRIMARY KEY(\"id\") ) WITHOUT ROWID");
-
-
- // 创建索引
-
- long existIndex = (long)db.ExecuteData("SELECT count(*) FROM sqlite_master WHERE type=\"table\" AND name =\'is_index\'")[0][0];
- // 判断是否已经存在索引
- if (existIndex == 0)
- {
- db.Execute("CREATE UNIQUE INDEX \"ix_app\" ON \"app\"( \"process\" ASC )");
- db.Execute("CREATE INDEX \"ix_app_tagId\" ON \"app\" ( \"tagId\" ASC )");
-
- db.Execute("CREATE UNIQUE INDEX \"ix_period\" ON \"period\" ( \"timeStart\" ASC, \"timeEnd\" ASC )");
-
- db.Execute("CREATE UNIQUE INDEX \"ix_win\" ON \"win\" ( \"appId\" ASC, \"text\" ASC )");
- db.Execute("CREATE INDEX \"ix_win_tagId\" ON \"win\" (\"tagId\" ASC )");
-
- // 此表仅用于标识索引已经创建完成
- db.Execute("CREATE TABLE IF NOT EXISTS \"is_index\"( \"id\" INTEGER NOT NULL, PRIMARY KEY(\"id\"))");
- }
- }
- }
- }
|