这是我一年前刚开始学c#时写的:
....
private string hanzi;
private string sAdd;
private string HzCodeReturn;// 返回五笔库中的解码 //定义字符串
string fuhao="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
....public string Hanzi
{
get
{
return hanzi;
}
set
{
if((value==null)&&(value.Length==0))
{
throw new ArgumentException("Invalid hanzi.");
}
hanzi=value;
}
}
....public string GetHzpyCode()
{
HzCodeReturn=null;
for(int i=0;i<hanzi.Length;i++)
{
int iCount=0;  //计数器
string tempStr=null;
for(int j=0;j<fuhao.Length;j++)
{
if(iCount==fuhao.Length)
{
break;
}
if(fuhao[j]==hanzi[i])//输入字符串中的某个字符和符号相同时,就保留原那个字符
{
HzCodeReturn=HzCodeReturn+hanzi.ToUpper()[i];
tempStr=hanzi.Substring(i,1).ToUpper();//取刚才读取汉字中的值
break;
}
else
{
iCount=iCount+1;
continue;
}
} string txtSQL="select * from HZPY where BHZ='"+hanzi[i]+"'"; //建立指向数据库的连接
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Application.StartupPath+"\\Hanzi.mdb"; OleDbConnection aConnection = new OleDbConnection ( strCon );               //设计所需要返回的数据集的内容
               OleDbCommand aCommand = new OleDbCommand (txtSQL ,aConnection );           
try
{   // 打开指向数据库连接
aConnection.Open ( ) ;
// 返回需要的数据集内容
OleDbDataReader aReader = aCommand.ExecuteReader ( ) ;
// 输出数据集的第一个字段的所有内容,如果要第二个字段把"0"改为"1"
while ( aReader.Read ( ) ) 
{
sAdd = aReader.GetString(0);//取大写字母; //判断当添加了“汉字”后,符号中的字符有没有和汉字
//拼音库当中有数据重复。如果邮,那么跳过添加字符
if(tempStr==sAdd)
{
break;
}
HzCodeReturn=HzCodeReturn + sAdd;
break;
}
// 关闭数据集
aReader.Close ( ) ;
// 关闭指向数据库的连接
                          aConnection.Close ( ) ;               
}
catch(OleDbException e)
{
// 如果出错,输出错误信息
Console.WriteLine ( "错误类型:", e.Errors[0].Message ) ;
}
}
return HzCodeReturn;//返回汉字拼音解码
}