生成拼音数据库

程序中经常要将汉字转化为拼音,但用文本实现对照比较慢,于是需要生成拼音数据库
关于原理,请参见《在VFP中编程自动产生所输入汉字的拼音》(肇庆加美海外学校 张镜明)


1.需要准备对应数据库py.mdb,其中设置空表py,设计表项目han和py,分别存放汉字和对应的拼音
2.按照《在VFP中编程自动产生所输入汉字的拼音》中介绍进行拼音输入法的逆转换,保存为py.txt
注意:py.txt需保存为ansi模式[使用文本编辑器的另存为功能]
3.开始设计使用数据库的部分,应用ado技术
    3.1 在"stdafx.h"中加入代码段
        #import  "c:/program files/common files/system/ado/msado15.dll"  
        no_namespace rename( "EOF", "adoEOF" )//连接ado需要
        #include "ICRSINT.H"
    3.2 连接数据库
        应用代码段
            ::CoInitialize(NULL);
            _ConnectionPtr m_pConnection;
            // 连接ado需要变量
            try{
            m_pConnection.CreateInstance(_uuidof(Connection));
                m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D://Pro//FileName//FileName0        

            //Debug//py.mdb;","","",NULL);
            }
            catch(...)
            {
                AfxMessageBox("数据库连接失败!");
            }      
            //连接完成
        [由于不需要使用记录集,所以只定义m_pConnection一个数据变量]
    3.3 关闭数据库
        应用代码段
            //退出ado连接
            m_pConnection->Close();
            ::CoUninitialize();    
        [打开必然需要关闭!]
4.处理文件部分
    应用代码段
        //读取文件
        CStdioFile file;
        CString string;
        CString Han;
        CString PY;
        file.Open("D://Pro//FileName//FileName0//Debug//py.txt",CFile::modeRead|CFile::typeText);
        file.SeekToBegin();
        file.ReadString(string);
        while(!string.IsEmpty())
        {        
            Han=string.Left(2);
            PY=string.Right(string.GetLength()-2);
            int temp=PY[1];
            if ((temp>64)&&(temp<123))
            {    
                CString sql;
                //数据库写入
                sql.Format("insert into PY(Han,PY) values('%s','%s')",Han,PY);
                m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);    、
                //数据库写入结束
                    
            }
            file.ReadString(string);
        }
        file.Close();
        //读取完毕    
    由于考虑到只使用简单的文件读入,所以使用了CStdioFile类,核心思想参见文章《在VFP中编程自动产生所输入汉字的拼音》
    数据库写入部分为SQL语句输入,应用ado接口


核心部分代码都在这里了
将整个按钮函数重新完整给出

void CFileName0Dlg::OnBnClickedOk()
{
    ::CoInitialize(NULL);
    _ConnectionPtr m_pConnection;
    // 连接ado需要变量
    try{
    m_pConnection.CreateInstance(_uuidof(Connection));
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D://Pro//FileName//FileName0

//Debug//py.mdb;","","",NULL);
    }
    catch(...)
{
    AfxMessageBox("数据库连接失败!");
}      
    //连接完成
    //读取文件
    CStdioFile file;
    CString string;
    CString Han;
    CString PY;
    file.Open("D://Pro//FileName//FileName0//Debug//py.txt",CFile::modeRead|CFile::typeText);
    file.SeekToBegin();
    file.ReadString(string);
    while(!string.IsEmpty())
    {        
        Han=string.Left(2);
        PY=string.Right(string.GetLength()-2);
        int temp=PY[1];
        if ((temp>64)&&(temp<123))
        {    
            CString sql;
            sql.Format("insert into PY(Han,PY) values('%s','%s')",Han,PY);
            m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);    
            
        }
        file.ReadString(string);
    }
    file.Close();
    //读取完毕
        //退出ado连接
    m_pConnection->Close();
    ::CoUninitialize();

    OnOK();
}

头文件的代码在前面有,有些错误处理没有做,毕竟只是个简单的程序

总结:这个程序使用最简单的ADO和CStdioFile的应用,建立完整拼音数据库的时间在1min-2min之间
需要完整程序参考或对拙作进行指导的的请Email到ikari_shinji_eva@sina.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值