📄 accountdb.cs
字号:
using System;
using System.Data;
using System.Xml;
using System.Collections;
using System.Text;
using System.Security;
using System.Security.Cryptography;
using System.Configuration;
using System.IO;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace Example_11_2
{
/// <summary>
/// Summary description for AccountDB.
/// </summary>
public class AccountDB
{
private static String _accountFile;
public String AccountFile
{
get
{
return(_accountFile);
}
set
{
_accountFile = value;
}
}
public int AddAccount(String sTitle,String sMoney,String sOtherInfo,
String dPubdate,String nUserID,String sAccountType)
{
int nAccountID = 0;
try
{
XmlDocument accountDoc = new XmlDocument();
accountDoc.Load(AccountFile);
XmlNode node = accountDoc.SelectSingleNode("/Accounts");
if(node != null)
{
///取到AccountID的值,并构造新节点的AccountID值
XmlNode lastNode = node.LastChild;
nAccountID = Int32.Parse(lastNode.Attributes["AccountID"].Value) + 1;
}
else
{
nAccountID = 1;
}
///创建新的帐户节点
XmlNode childNode = accountDoc.CreateNode(XmlNodeType.Element,"Account",null);
///添加节点的属性及其值
AddNodeAttribute(accountDoc,childNode,"AccountID",nAccountID.ToString());
AddNodeAttribute(accountDoc,childNode,"Title",sTitle);
AddNodeAttribute(accountDoc,childNode,"Money",sMoney);
AddNodeAttribute(accountDoc,childNode,"CreateDate",DateTime.Now.ToString());
AddNodeAttribute(accountDoc,childNode,"Pubdate",dPubdate.ToString());
AddNodeAttribute(accountDoc,childNode,"OtherInfo",sOtherInfo);
AddNodeAttribute(accountDoc,childNode,"UserID",nUserID.ToString());
AddNodeAttribute(accountDoc,childNode,"AccountType",sAccountType);
///添加帐户节点
node.AppendChild(childNode);
///保存文档并修改文档
accountDoc.Save(AccountFile);
}
catch(Exception ex)
{
throw new Exception("访问系统数据错误!!!",ex);
}
return(nAccountID);
}
private void AddNodeAttribute(XmlDocument xmlDoc,XmlNode parentNode,String sAttributeName,String sAttributeValue)
{
XmlAttribute attribute = xmlDoc.CreateAttribute(sAttributeName,null);
attribute.Value = sAttributeValue;
parentNode.Attributes.Append(attribute);
}
public DataView GetAccountsFromXml(int nUserID)
{
DataTable dataTable = new DataTable("Account");
dataTable.Columns.Add("Title");
dataTable.Columns.Add("Money",typeof(Decimal));
dataTable.Columns.Add("Pubdate",typeof(DateTime));
dataTable.Columns.Add("OtherInfo");
dataTable.Columns.Add("AccountType");
try
{
SymmetricMethodData symmetric = new SymmetricMethodData();
XmlDocument accountDoc = new XmlDocument();
accountDoc.Load(AccountFile);
XmlNodeList nodeList = accountDoc.SelectNodes("/Accounts/Account[@UserID=" + nUserID.ToString() + "]");
int index = 0;
foreach(XmlNode node in nodeList)
{
DataRow row = dataTable.NewRow();
row["Title"] = symmetric.DecryptoData(node.Attributes["Title"].Value);
row["Money"] = Convert.ToDecimal(symmetric.DecryptoData(node.Attributes["Money"].Value));
row["Pubdate"] = Convert.ToDateTime(node.Attributes["Pubdate"].Value);
row["OtherInfo"] = symmetric.DecryptoData(node.Attributes["OtherInfo"].Value);
row["AccountType"] = symmetric.DecryptoData(node.Attributes["AccountType"].Value);
dataTable.Rows.Add(row);
if(++index > 10)break;
}
}
catch(Exception ex)
{
throw new Exception("访问系统数据错误!!!",ex);
}
DataView dataView = new DataView(dataTable);
dataView.AllowNew = true;
dataView.AllowEdit = true;
dataView.Sort = "Pubdate DESC";
return(dataView);
}
public static TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
public static String AccountOutType()
{
SymmetricMethodData sym = new SymmetricMethodData();
return(sym.EncryptoData("支出"));
}
public static String AccountInType()
{
SymmetricMethodData sym = new SymmetricMethodData();
return(sym.EncryptoData("收入"));
}
/// <summary>
/// 加密函数
/// </summary>
public static String EncryptString(string thisEncode)
{
string encrypted;
byte[] Code = ASCIIEncoding.ASCII.GetBytes(thisEncode);
encrypted = Convert.ToBase64String(
des.CreateEncryptor().TransformFinalBlock(Code, 0,
Code.Length)
);
return encrypted;
}
/// <summary>
/// 解密函数
/// </summary>
public static String DecryptString(string thisDecode)
{
string decrypted;
byte[] Code = Convert.FromBase64String(thisDecode);
decrypted = ASCIIEncoding.ASCII.GetString(
des.CreateDecryptor().TransformFinalBlock(Code, 0,
Code.Length)
);
return decrypted;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -