还不错啊,记账助手
using System;using System.Windows.Forms;using System.Data.SQLite;using System.IO;using System.ComponentModel;namespace AccountBook.ForSingle{ public partial class Splash : Form { private static readonly string dbName = "AccountBookforSingle.db"; private static Splash _instance; public static Splash Instance { get { if (_instance == null) { _instance = new Splash(); } return _instance; } } private Timer _ticker; public Timer Ticker { get { if (_ticker == null) { _ticker = new Timer(this.components); _ticker.Interval = 2000; _ticker.Tick = new System.EventHandler(_ticker_Tick); } return _ticker; } } private enum DBStateEnum { Undefined, Ready, Failed } private DBStateEnum _dbState = DBStateEnum.Undefined; private DBStateEnum DBState { get { return _dbState; } set { _dbState = value; } } private void _ticker_Tick(object sender, System.EventArgs e) { if (DBState == DBStateEnum.Ready) { this.DialogResult = DialogResult.OK; this.Close(); } else if (DBState == DBStateEnum.Failed) { if (string.IsNullOrEmpty(this.lblMessage.Text)) { this.lblMessage.Text = ErrorMessage; } else { this.DialogResult = DialogResult.Cancel; this.Close(); } } } private BackgroundWorker _worker; private BackgroundWorker Worker { get { if (_worker == null) { _worker = new BackgroundWorker(); _worker.DoWork =new DoWorkEventHandler(_worker_DoWork); } return _worker; } } private void _worker_DoWork(object sender, DoWorkEventArgs e) { CheckDBConnection(); } private Splash() { InitializeComponent(); SetDialogInfo(); Ticker.Start(); Worker.RunWorkerAsync(); } private string _errorMessage; private string ErrorMessage { get { return _errorMessage; } set { _errorMessage = value; } } private void CheckDBConnection() { string basePath = System.AppDomain.CurrentDomain.BaseDirectory; string dbPath = Path.Combine(basePath, dbName); try { if (!File.Exists(dbPath)) { SQLiteConnection.CreateFile(dbPath); } GlobalContext.connString = string.Format("Data Source={0};", dbPath); using (SQLiteConnection conn = new SQLiteConnection(GlobalContext.connString)) { conn.Open(); if (conn.GetSchema("Tables").Select(string.Format("Table_Name = '{0}'","AccountRecord")).Length == 0) { using(SQLiteCommand cmd = new SQLiteCommand(createAccountRecordSql, conn)) { cmd.ExecuteNonQuery(); } } conn.Close(); } DBState = DBStateEnum.Ready; } catch (Exception) { ErrorMessage = "连接本地数据库失败"; DBState = DBStateEnum.Failed; } } private static readonly string createAccountRecordSql = @"create table AccountRecord ( RecordID integer primary key autoincrement, ConsumeDate datetime not null default(datetime('now','localtime')), ConsumeAmount decimal(10,2) not null, Category nchar(4) not null, SubCategory nvarchar(32) );"; private void SetDialogInfo() { lblVer.Text = string.Format("Ver: {0}", Application.ProductVersion); lblBy.Text = string.Format("By: {0}", "chen wu"); } }}
评论