zoukankan      html  css  js  c++  java
  • android直接读取数据库文件

    public class Dictionary extends Activity  implements OnClickListener, TextWatcher{ 
        private final String DATABASE_PATH = android.os.Environment 
                .getExternalStorageDirectory().getAbsolutePath() 
                + "/dictionary"; 
        private final String DATABASE_FILENAME = "dictionary.db3"; 
        SQLiteDatabase database; 
        Button btnSelectWord; 
        AutoCompleteTextView actvWord; 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 
            // 打开数据库,database是在Main类中定义的一个SQLiteDatabase类型的变量 
            database = openDatabase(); 
            // 下面的代码装载了相关组件,并设置了相应的事件 
            btnSelectWord = (Button) findViewById(R.id.btnSelectWord); 
            actvWord = (AutoCompleteTextView) findViewById(R.id.actvWord); 
            btnSelectWord.setOnClickListener(this); 
            actvWord.addTextChangedListener(this); 
        } 
        public void onClick(View view) 
        { 
            //  查找单词的SQL语句 
            String sql = "select chinese from t_words where english=?";   
            Cursor cursor = database.rawQuery(sql, new String[] 
            { actvWord.getText().toString() }); 
            String result = "未找到该单词."; 
            //  如果查找单词,显示其中文信息 
            if (cursor.getCount() > 0) 
            { 
                //  必须使用moveToFirst方法将记录指针移动到第1条记录的位置 
                cursor.moveToFirst(); 
                result = cursor.getString(cursor.getColumnIndex("chinese")); 
                Log.i("tran", "success"+result); 
            } 
            //  显示查询结果对话框 
            new AlertDialog.Builder(this).setTitle("查询结果").setMessage(result) 
                    .setPositiveButton("关闭", null).show(); 

        } 

        private SQLiteDatabase openDatabase() { 
            try { 
                // 获得dictionary.db文件的绝对路径 
                String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; 
                File dir = new File(DATABASE_PATH); 
                // 如果/sdcard/dictionary目录中存在,创建这个目录 
                if (!dir.exists()) 
                    dir.mkdir(); 
                // 如果在/sdcard/dictionary目录中不存在 
                // dictionary.db文件,则从res aw目录中复制这个文件到 
                // SD卡的目录(/sdcard/dictionary) 
                if (!(new File(databaseFilename)).exists()) { 
                    // 获得封装dictionary.db文件的InputStream对象 
                    InputStream is = getResources().openRawResource( 
                            R.raw.dictionary); 
                    FileOutputStream fos = new FileOutputStream(databaseFilename); 
                    byte[] buffer = new byte[8192]; 
                    int count = 0; 
                    // 开始复制dictionary.db文件 
                    while ((count = is.read(buffer)) > 0) { 
                        fos.write(buffer, 0, count); 
                    } 

                    fos.close(); 
                    is.close(); 
                } 
                // 打开/sdcard/dictionary目录中的dictionary.db文件 
                SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( 
                        databaseFilename, null); 
                return database; 
            } catch (Exception e) { 
            } 
            return null; 
        } 
        @Override 
        public void afterTextChanged(Editable s) { 
        } 
        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count, 
                int after) { 
        } 
        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 
        } 

    } 

  • 相关阅读:
    gflag使用
    INTERVIEW #2
    Decision Tree
    Java FAQ
    K-Nearest Neighbors
    INTERVIEW #1
    C++ FAQ
    INTERVIEW #0
    Selection Sort
    TCP 3-Way Handshake
  • 原文地址:https://www.cnblogs.com/huidaoli/p/3200660.html
Copyright © 2011-2022 走看看