using system;
using system.data;
using system.io;
using system.windows.forms;
using system.collections;
namespace datalibrary
{
/// <summary>
/// 配置底层
/// </summary>
public class configmanagerkeyvalue
{
private string pstrkey;
private object pobjvalue;
/// <summary>
/// 配置管理键值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public configmanagerkeyvalue(string key,object value)
{
pstrkey = key;
pobjvalue = value;
}
/// <summary>
/// 键
/// </summary>
public string key
{
get{return pstrkey;}
set{pstrkey=value;}
}
/// <summary>
/// 值
/// </summary>
public object value
{
get{return pobjvalue;}
set{pobjvalue=value;}
}
}
/// <summary>
/// 配置管理业务
/// </summary>
public class disposalconductservice
{
private string pstrfilename;
private dataset dsdataset;
private dataview dvdataview;
/// <summary>
/// 配置管理业务
/// </summary>
/// <param name="filename"></param>
public disposalconductservice(string filename)
{
pstrfilename = filename;
initobjects();
}
/// <summary>
/// 配置管理业务
/// </summary>
public disposalconductservice()
{
pstrfilename = system.reflection.assembly.getexecutingassembly().tostring() + ".exe.config";
appdomain ad = appdomain.currentdomain;
pstrfilename = ad.basedirectory + pstrfilename;
initobjects();
}
private void initobjects()
{
initdatasource();
}
private void initdatasource()
{
dsdataset = new dataset();
try
{
dsdataset.readxml(pstrfilename);
dvdataview = dsdataset.tables[0].defaultview;
dvdataview.allowedit = true;
dvdataview.allowdelete = true;
dvdataview.allownew = true;
}
catch(exception)
{
dsdataset.tables.add(createdatatable() );
dsdataset.datasetname = "application";
try
{
savedata();
dvdataview = dsdataset.tables[0].defaultview;
dvdataview.allowedit = true;
dvdataview.allowdelete = true;
dvdataview.allownew = true;
}
catch(exception e)
{
messagebox.show(e.message);
}
}
}
/// <summary>
/// 取得数据值
/// </summary>
/// <param name="keyname">键名</param>
/// <param name="default">默认值</param>
/// <returns>值</returns>
public object getvalue(string keyname,object default)
{
object strresult=default;
datarowview row;
dvdataview.rowfilter="key=" + keyname + "";
if(dvdataview.count != 0)
{
row = dvdataview[0];
strresult = row["value"];
}
else
{
addvalue(keyname,default);
}
return(strresult);
}
/// <summary>
/// 取得值
/// </summary>
/// <returns>值</returns>
public arraylist getvalues()
{
arraylist list = new arraylist();
try
{
dvdataview.rowfilter="";
foreach(datarowview row in dvdataview)
{
list.add(new configmanagerkeyvalue((string)row["key"],row["value"]));
}
}
catch{}
return list;
}
/// <summary>
/// 增加一个值
/// </summary>
/// <param name="keyname">键</param>
/// <param name="value">值</param>
/// <returns>成功:true;失败:false</returns>
public bool addvalue(string keyname,object value)
{
datarowview row;
try
{
dvdataview.rowfilter="key=" + keyname + "";
if(dvdataview.count==0)
{
row = dvdataview.addnew();
row["key"] = keyname;
row["value"] = value;
row.endedit();
savedata();
return true;
}
else
{
return false;
}
}
catch(exception e)
{
messagebox.show(e.message);
return false;
}
}
/// <summary>
/// 删除一个值
/// </summary>
/// <param name="keyname">键</param>
/// <returns>成功:true;失败:false</returns>
public bool removevalue(string keyname)
{
datarowview row;
dvdataview.rowfilter="key=" + keyname + "";
if(dvdataview.count != 0)
{
row = dvdataview[0];
row.delete();
return true;
}
else
{
return false;
}
}
/// <summary>
/// 更新值
/// </summary>
/// <param name="keyname">键</param>
/// <param name="value">值</param>
/// <returns>成功:true;失败:false</returns>
public bool updatevalue(string keyname,object value)
{
removevalue(keyname);
return addvalue(keyname,value);
}
private void savedata()
{
dsdataset.writexml(pstrfilename);
}
private datatable createdatatable()
{
datatable tbl = new datatable();
tbl.tablename = "configuration";
tbl.columns.add("key",typeof(string));
tbl.columns.add("value",typeof(string));
return(tbl);
}
/// <summary>
/// 文件名
/// </summary>
public string filename
{
get{return pstrfilename;}
}
}
}
