using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.OleDb;namespace AccessDataBase{ class DBManager { const string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;data source=db\test.mdb"; private static DBManager db; private DBManager() { } public static DBManager getDBManager() { if (db == null) db = new DBManager(); return db; } ////// 返回指定key的值 /// /// ///对应key的值,如果没有对应的值返回null public String QueryByKey(string key) { using (OleDbConnection conn = new OleDbConnection(connStr)) { conn.Open(); OleDbCommand command = new OleDbCommand("select [v] from confirm where [k]=@key", conn); command.Parameters.Add("@key", key); OleDbDataReader reader = command.ExecuteReader(); using (reader) { if (reader.Read()) { return reader.GetString(0); // 返回key值 } else { return null; } } } } ////// 将键值对插入confirm表中,如果表中已经存在key,则抛出KeyHasExistException /// /// /// public void Insert(string key, string value) { using (OleDbConnection conn = new OleDbConnection(connStr)) { conn.Open(); // 检查key是否已经存在 OleDbCommand command = new OleDbCommand("SELECT [k] from confirm where k=@key", conn); command.Parameters.Add("@key", key); OleDbDataReader reader = command.ExecuteReader(); // key不存在 if (!reader.Read()) { string sql = String.Format("INSERT INTO confirm(k,v) VALUES('{0}','{1}')", key, value); command = new OleDbCommand(sql,conn); Console.WriteLine(command.CommandText); command.ExecuteNonQuery(); } else { throw new KeyHasExistException("数据库已存在该key"); // key存在抛出异常 } } } ////// 更新给定的键值对,如果confirm没有记录,则加入一条新的记录 /// /// /// public void Upadte(string key, string value) { using (OleDbConnection conn = new OleDbConnection(connStr)) { conn.Open(); // 判断是否存在key OleDbCommand command = new OleDbCommand("SELECT [k] from confirm where [k]=@key", conn); command.Parameters.Add("@key",key); OleDbDataReader reader = command.ExecuteReader(); // key存在 if (reader.Read()) { string sql = string.Format("UPDATE confirm SET [k]='{0}', [v]='{1}' WHERE k='{2}'", key, value, key); command = new OleDbCommand(sql, conn); Console.WriteLine(command.CommandText); command.ExecuteNonQuery(); } else { Insert(key, value); } } } } class KeyHasExistException : Exception { public KeyHasExistException(String msg) : base(msg) { } }}