亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dbtool.java~310~

?? J2ME開(kāi)發(fā)的電子詞典
?? JAVA~310~
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
package org.zblog.zenghelper.dbtool;

import javax.microedition.lcdui.*;
import javax.microedition.rms.*;

import org.zblog.zenghelper.screen.*;
import org.zblog.zenghelper.util.*;
import java.util.Vector;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.ByteArrayInputStream;

/**
 * <br><strong>Z英語(yǔ)學(xué)習(xí)助手-RMS操作工具類(lèi)</strong><br>
 * <br>該主要包括以下功能:
 * <br>1.定義了幾個(gè)RMS靜態(tài)常量名
 * <br>2.簡(jiǎn)單的RMS操作:打開(kāi)RMS,添加記錄,刪除記錄,獲取記錄,更新記錄
 * <br>3.高級(jí)的RMS操作:添加word,更新word,刪除word,獲取生詞id集合
 *
 * @author <a href="mailto:zcw@zblog.org">朱傳偉</a><br>
 * <a href="http://www.zblog.org">www.zblog.org</a></p>
 * @version <strong>ZEnHelper</strong> Ver 1.0
 */
public class DbTool implements Runnable{
    public static final String CN_WORD_GROUP_DB="cnwordgroup";
    public static final String EN_WORD_GROUP_DB="enwordgroup";
    public static final String STRANGE_WORD="strangeword";
    public static final String CN_WORD_DB="cnworddb";
    public static final String EN_WORD_DB="enworddb";
    public static final String SYSTEM_DB="systemdb";
    //第一條記錄的id編號(hào)
    public static int cnFirstId=0;
    public static int enFirstId=0;

    private static DbTool dbt=null;

    /**
     * 初始化cnFirstId,enFirstId;
     */
    private DbTool() {
        DBInit();
    }

    /**
     * 檢查數(shù)據(jù)庫(kù)是否已初始化
     */
    public void DBInit(){
        try{
            cnFirstId=getNextId(false)-1000;
            enFirstId=getNextId(true)-676;
            if(cnFirstId<0||enFirstId<0){
                PublicRes pr=PublicRes.getInstance();
                Alert al=new Alert("程序初始化","  程序第一次運(yùn)行.\n  需要初始化數(shù)據(jù)庫(kù).\n  請(qǐng)稍后.....",pr.busyImage,AlertType.CONFIRMATION);
                al.setTimeout(60000000);
                Navigator.show(al);
                Thread init=new Thread(this);
                init.start();
            }
        }
        catch(Exception e){e.printStackTrace();}
    }

    /**
     * 返回DbTool對(duì)象
     * @return DbTool
     */
    public synchronized static DbTool getInstance(){
        if(dbt==null)
            dbt=new DbTool();
        return dbt;
    }

    /**
     * 打開(kāi)RecordStroe,返回RecordStore對(duì)象
     * @param rsName String
     * @return RecordStore
     */
    public RecordStore openRS(String rsName){
        try{
            return RecordStore.openRecordStore(rsName,true);
        }
        catch(Exception e){
            return null;
        }
    }

    /**
     * 直接返回指定RMS下的指定id的byte[]
     * @param rsName String
     * @param id int
     * @return byte[]
     */
    public byte[] getRSByte(String rsName,int id){
        byte[] tby=null;
        try{
            RecordStore rs = openRS(rsName);
            tby = rs.getRecord(id);
            rs.closeRecordStore();
        }
        catch(Exception e){
            e.printStackTrace();
        }
         return tby;
    }

    /**
     * 更新指定倉(cāng)庫(kù)rsName中rid的數(shù)據(jù)
     * @param rsName String 倉(cāng)庫(kù)名
     * @param bts byte[]   待更新的數(shù)據(jù)
     * @param rid int     記錄編號(hào)
     * @return boolean
     */
    public boolean update(String rsName,byte[] bts,int rid){
        try{
            RecordStore rs = openRS(rsName);
            rs.setRecord(rid,bts,0,bts.length);
            rs.closeRecordStore();
            return true;
        }
        catch(Exception e){
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 往指定的rsName倉(cāng)庫(kù)中插入一條記錄,該方法不適合批量插入
     * @param rsName String 倉(cāng)庫(kù)名
     * @param bts byte[]   記錄數(shù)據(jù)
     * @return int 返回記錄id
     */
    public int addOne(String rsName,byte[]bts){
        try{
            RecordStore rs = openRS(rsName);
            int id=rs.addRecord(bts,0,bts.length);
            rs.closeRecordStore();
            return id;
        }
        catch(Exception e){
            e.printStackTrace();
            return -1;
        }
    }

    /**
     * 專(zhuān)門(mén)針對(duì)添加單詞而封裝的數(shù)據(jù)庫(kù)操作.
     * <br>對(duì)AddWordScreen中數(shù)據(jù)的檢查在AddWordScreen中實(shí)現(xiàn);
     * <br>需要檢查:enWord(必須),對(duì)于中文解釋?zhuān)瑢傩钥蛇x,但中文詞必須有.
     * @param aws AddWordScreen
     * @return 添加或更新的En庫(kù)的Id編號(hào),-1表示出錯(cuò)
     */
    public int addWord(AddWordScreen aws){
        try{
            //1.首先獲取EnWord對(duì)象,如果該En詞不存在,則:先添加該單詞,以及添加到EnGroup
            WordGroup enGroup=new WordGroup(aws.enWord,true);
            EnWord ew=new EnWord(aws.enWord,enGroup);
            ew.setYbs(aws.ybs);
            if(ew.rsId==-1){
                ew.toBytes();
                ew.rsId=addOne(EN_WORD_DB,ew.bytes);
                enGroup.addWord(ew.word,ew.rsId);
                enGroup.store();
            }
            //判斷是否需要添加為生詞
            if(aws.sen){
                ByteArrayOutputStream bos=new ByteArrayOutputStream();
                DataOutputStream dos=new DataOutputStream(bos);
                dos.writeInt(ew.rsId);
                byte[]bts=bos.toByteArray();
                dos.close();
                bos.close();
                int sid=addOne(STRANGE_WORD,bts);
                ew.setSen(sid);
            }
            //2.獲取EnWord關(guān)聯(lián)的CnWord,并且設(shè)置RsId到enword中
            Vector cns=aws.cnWords;
            String ts=null;
            String temp=null;
            WordGroup cnWg=null;
            CnWord cword=null;
            //CnWord dd=new CnWord("sss",enGroup);
            for(int i=0;i<cns.size();i++){
                ts=(String)cns.elementAt(i);
                temp=ts.substring(ts.indexOf(".")+1);
                cnWg=new WordGroup(temp,false);
                cword=new CnWord(temp,cnWg);
                cword.addEnId(ew.rsId+"");
                cword.toBytes();
                //如果該Cn詞不存在,則:1.添加該Cn詞到CnDB庫(kù) 2.將該Cn詞添加到CnGroup庫(kù)
                if(cword.rsId==-1){
                    cword.rsId=addOne(CN_WORD_DB,cword.bytes);
                    cnWg.addWord(temp,cword.rsId);
                    cnWg.store();
                }
                //如果存在,則:1. 更新Cn詞
                else{
                    update(CN_WORD_DB,cword.bytes,cword.rsId);
                }
                //將該Cn RsId添加到EnWord中
                ew.addCnId(cword.rsId+"",ts.substring(0,ts.indexOf(".")));
            }
            //3.更新EnWord對(duì)象
            ew.store();
            return ew.rsId;
        }
        catch(Exception e){
            e.printStackTrace();
            return -1;
        }
    }

    /**
     * 更新Word,需要以下操作:<br>
     * <br>1.根據(jù)rsId,需要?jiǎng)h除原有的所有關(guān)聯(lián):清除CnDB中的所有關(guān)聯(lián),刪除EnDB中的記錄
     * <br>2.根據(jù)groupId刪除EnGroup中的記錄
     * <br>3.刪除生詞表中的記錄
     * <br>4.從新執(zhí)行添加操作,調(diào)用上面的添加方法
     * @param as AddWordScreen
     */
    public int updateWord(AddWordScreen as){
        try{
            //根據(jù)rsId,需要?jiǎng)h除原有的所有關(guān)聯(lián):清除CnDB中的所有關(guān)聯(lián),刪除EnDB中的記錄
            EnWord ew = new EnWord(as.rsId);
            Vector tcns = ew.cnRSId;
            for (int i = 0; i < tcns.size(); i++) {
                CnWord tcw = new CnWord(Integer.parseInt((String) tcns.
                        elementAt(i)));
                tcw.enRSId.removeElement(("" + ew.rsId));
                tcw.store();
            }
            WordGroup twg=new WordGroup(ew.word,true);
            twg.words.remove(ew.word);
            twg.store();
            //根據(jù)ew中的senId,刪除生詞表中的id
            if(ew.senId!=-1)
                deleteOne(STRANGE_WORD,ew.senId);
            //根據(jù)groupId刪除EnGroup中的記錄
            deleteOne(EN_WORD_DB,ew.rsId);
            //從新執(zhí)行添加操作,調(diào)用上面的添加方法
            return addWord(as);
        }
        catch(Exception e){
            e.printStackTrace();
            return -1;
        }
    }

    /**
     * 刪除單個(gè)EnWord方法,該方法的執(zhí)行過(guò)程如下:<br>
     * 1.刪除CnWord中關(guān)聯(lián)<br>
     * 2.刪除EnGroup中的關(guān)聯(lián)<br>
     * 3.刪除STRANGE_WORD中的關(guān)聯(lián)<br>
     * 4.刪除EnWord本身
     * @param rsId int 失?。?1,成功:正整數(shù)
     */
    public int delEnWord(int rsId){
        try{
            //構(gòu)建EnWord對(duì)象
            EnWord ew=new EnWord(rsId);
            //刪除該EnWord與CnWord的關(guān)聯(lián)
            if(ew.cnRSId.size()>0){
                Vector cns=ew.cnRSId;
                CnWord cw=null;
                for(int n=cns.size()-1;n>=0;n--){
                    cw=new CnWord(Integer.parseInt((String)cns.elementAt(n)));
                    cw.enRSId.removeElement(rsId+"");
                    cw.store();
                }
            }
            //刪除該EnWord與Strange的關(guān)聯(lián)
            if(ew.senId!=-1){
                deleteOne(STRANGE_WORD,rsId);
            }
            //刪除該EnWord與EnGroup的關(guān)聯(lián)
            WordGroup wg=new WordGroup(ew.word);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区色| 国产原创一区二区三区| gogogo免费视频观看亚洲一| 国产欧美日本一区二区三区| 国产成人aaa| 成人欧美一区二区三区1314| 91猫先生在线| 亚洲制服丝袜一区| 91精品国产麻豆| 国产精一区二区三区| 亚洲视频免费在线观看| 91黄色在线观看| 日本va欧美va精品发布| 国产嫩草影院久久久久| 色狠狠一区二区| 日本免费新一区视频| 国产午夜精品一区二区三区视频| 91在线观看视频| 天天影视网天天综合色在线播放 | 天天综合天天做天天综合| 日韩免费成人网| 成人免费高清视频在线观看| 丝袜美腿亚洲综合| 久久久国产精品麻豆| 在线观看欧美日本| 国产一区二区三区不卡在线观看| 一区二区欧美国产| 久久综合资源网| 91论坛在线播放| 精彩视频一区二区| 亚洲精品久久久蜜桃| 精品福利在线导航| 欧美性做爰猛烈叫床潮| 国产精品99久久久久久久vr| 亚洲欧洲一区二区在线播放| 日韩欧美一区二区免费| 99国产精品久久久| 91免费国产在线观看| 日韩黄色一级片| 国产精品蜜臀av| 日韩欧美电影在线| 在线观看日韩电影| 白白色 亚洲乱淫| 久久精品久久综合| 午夜影院久久久| 一区二区三区在线视频播放| 欧美大片拔萝卜| 欧美性大战久久久久久久| 国产精品456露脸| 日本不卡视频在线观看| 亚洲综合免费观看高清完整版在线| 日本一区二区不卡视频| 精品国产乱码久久久久久免费 | 精品一区二区三区免费观看| 亚洲福利视频一区二区| 亚洲少妇屁股交4| 久久九九久久九九| 精品电影一区二区三区| 亚洲啪啪综合av一区二区三区| 欧美亚洲综合另类| 国产99精品国产| 久久超碰97中文字幕| 日韩av电影免费观看高清完整版在线观看 | 亚洲h在线观看| 亚洲女人小视频在线观看| 日本一区二区不卡视频| 国产喷白浆一区二区三区| 日韩美女主播在线视频一区二区三区| 欧美色倩网站大全免费| 欧美三级一区二区| 欧美日韩国产不卡| 欧美日韩精品一区二区三区四区 | 69堂成人精品免费视频| 欧美日韩另类一区| 欧美精选一区二区| 欧美一区二区三区视频在线观看| 欧美日韩黄色影视| 99riav一区二区三区| 韩国精品主播一区二区在线观看 | www.日韩大片| 丁香六月久久综合狠狠色| 蜜桃久久av一区| 国内成人自拍视频| 国v精品久久久网| 成人av午夜电影| 91在线视频18| 7777女厕盗摄久久久| 欧美高清视频www夜色资源网| 欧美日韩一区二区在线观看| 欧美日韩1234| 欧美精品一区二区精品网| 亚洲精品一区二区三区99| 久久精品亚洲麻豆av一区二区| 国产日本欧美一区二区| 亚洲免费在线观看| 五月婷婷激情综合| 老司机精品视频线观看86| 国产精品自拍一区| 99久久国产综合精品女不卡| 欧美羞羞免费网站| 欧美日韩不卡视频| 中文字幕亚洲在| 亚洲欧洲日韩女同| 亚洲国产欧美在线人成| 午夜国产精品影院在线观看| 精品影视av免费| 99久久婷婷国产综合精品| 欧美日韩一区二区三区高清| 欧美一级片在线看| 国产午夜精品福利| 亚洲精品免费一二三区| 日韩电影免费一区| 懂色av中文一区二区三区| 日本道色综合久久| 日韩欧美电影在线| 亚洲乱码国产乱码精品精的特点| 日韩国产成人精品| 成人在线视频首页| 91精品国产综合久久小美女| 国产日韩欧美一区二区三区综合| 亚洲最新视频在线播放| 精品综合久久久久久8888| 一本大道久久a久久精品综合| 91精品国产麻豆国产自产在线| 中文字幕一区二区三区乱码在线| 日本欧美一区二区三区| 91污片在线观看| 日韩精品一区二区三区三区免费| 亚洲人快播电影网| 久久97超碰色| 欧美视频一区二| 日韩一区欧美一区| 精品写真视频在线观看| 欧美亚洲综合久久| 自拍偷自拍亚洲精品播放| 激情文学综合插| 欧美一级久久久久久久大片| 亚洲三级在线免费观看| 国产精品一区2区| 7777精品伊人久久久大香线蕉| 亚洲柠檬福利资源导航| 国产二区国产一区在线观看| 91精品国产综合久久香蕉麻豆| 亚洲欧美韩国综合色| 成人国产精品免费观看动漫| 欧美白人最猛性xxxxx69交| 亚洲国产cao| 91女厕偷拍女厕偷拍高清| 国产免费久久精品| 久久精品国产免费| 日韩一二在线观看| 日韩影院精彩在线| 91小视频在线| 亚洲三级在线免费观看| 99久久99久久久精品齐齐| 国产精品久久久久久一区二区三区 | 欧洲一区二区三区免费视频| 国产精品国产三级国产a| 国产福利电影一区二区三区| 久久九九全国免费| 国产精品一区二区三区四区| 久久美女高清视频| 国产精品自拍网站| 欧美高清在线视频| 色综合色狠狠综合色| 国产欧美日韩不卡免费| 国产成人午夜片在线观看高清观看| 久久综合国产精品| 色综合视频在线观看| 成人av在线资源| 久久久五月婷婷| 国产综合色视频| 久久人人爽人人爽| 国产91精品欧美| 亚洲欧洲精品一区二区精品久久久| av不卡免费电影| 亚洲三级理论片| 欧美日韩一卡二卡| 蜜臀91精品一区二区三区| 日韩视频一区在线观看| 国内精品国产三级国产a久久| 国产欧美日韩精品一区| 色综合久久久久综合| 亚洲国产精品久久人人爱| 在线成人高清不卡| 久久99九九99精品| 国产欧美视频在线观看| 91伊人久久大香线蕉| 亚洲一二三专区| 日韩亚洲欧美在线观看| 国产在线不卡一区| 亚洲婷婷综合色高清在线| 欧美中文字幕不卡| 久久精品国产一区二区三| 国产亚洲欧美中文| 在线观看视频一区二区欧美日韩| 天天综合天天综合色| 久久网站热最新地址| 成人综合婷婷国产精品久久| 激情av综合网|