zoukankan      html  css  js  c++  java
  • android 本地数据库sqlite的封装

      单机android   sqlite数据库的实现,这个数据库可与程序一起生成在安装包中

    一、下载sqlite3.exe文件

    二、运行 cmd 转到sqlite3.exe 所在目录  运行 sqlite3.exe 数据库名.db

        然后会出现sqlite>的命令提示符

        输入创建表的语句, create table 表名(‘列’,‘列’。。。);(注意: 要在结束部分加  分号 )

        此时会在sqlite3.exe 所在目录,出现所建数据库的文件

    三、如果想在Android中运行的话,需要在数据库中增添

     CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'zh_CN')
    INSERT INTO "android_metadata" VALUES ('zh_CN')

    四、将数据库 复制到 Android项目中res/raw中

    五、下面是代码:
    public class TestSqlDatabase{
    	
    	private static final String DATABASE_PATH = "/data/data/your.package.name/databases";     //此处不要改动,这个为数据库在手机上的物理地址
    	private static final int DATABASE_VERSION = 0;
    	private static final String DATABASE_NAME = "test.db";  //此处为数据库名称
    	
    	private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME;
    	
    	private Context context;
         private SQLiteDatabase database;
    	
    	public TestSqlDatabase(Context context) {
    		this.context = context;
    		
    		File file = new File(outFileName);
    		if (file.exists()) {
    			database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
    			if (database.getVersion() != DATABASE_VERSION) {
    				database.close();
    				file.delete();	
    			}
    		}
    		try {
    			buildDatabase();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    	}
    	private void buildDatabase() throws Exception{
    		InputStream myInput = context.getResources().openRawResource(R.raw.test);
    		File file = new File(outFileName);
    		
    		File dir = new File(DATABASE_PATH);
    		if (!dir.exists()) {
    			if (!dir.mkdir()) {
    				throw new Exception("创建失败");
    			}
    		}
    		
    		if (!file.exists()) {			
    			try {
    				OutputStream myOutput = new FileOutputStream(outFileName);
    				
    				byte[] buffer = new byte[1024];
    		    	int length;
    		    	while ((length = myInput.read(buffer))>0){
    		    		myOutput.write(buffer, 0, length);
    		    	}
    		    	myOutput.close();
    		    	myInput.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		
    		}
    	}
    
    /**
     * 查找
     * @return
     */
    public Cursor select() {
         database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
         String sql = "select * from note_table";
    		
         Cursor cursor = database.rawQuery(sql, null);
         return cursor;
    }
    /**
     * 插入
     * @param word
     * @param note
     * @return
     */
    public long insert(String word, String note) {
          database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
          ContentValues cv = new ContentValues();
          cv.put("word", word);
          cv.put("note", note);
    			
          long result = database.insert("note_table", null, cv);	
          return result;
    }
     
     
    
    /**
     * 更新
     * @param word
     * @param note
     * @return
    	 */
    	private int update(String word, String note) {                            //参数 word 为修改条件   note为修改内容
    		database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
    		
    		ContentValues cv = new ContentValues();
    		cv.put("note", note);
    		
    		int result = database.update("note_table", cv, "word=?", new String[]{word});     
    		
    		return result;
    	}
     
    
    /**
     * 删除
     * @param word
     */
    public int deleteNote(String word) {
          database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
          int result = database.delete("note_table", "word=?", new String[]{word});
          return result;
    }
     
        
    public void close() {
          database.close();
    }
    
    
    }
     
    

      

      

  • 相关阅读:
    全面分析 Spring 的编程式事务管理及声明式事务管理
    100句唤醒自己的励志名言
    100句自我激励的名言佳句
    java反射详解
    JAVA中的反射机制
    【BZOJ1015】【JSOI2008】星球大战Starwar(离线并差集)
    【HEOI2016/TJOI2016】排序(二份答案+线段树)
    【USACO06DEC】—牛奶模式Milk Patterns(后缀自动机)
    【HNOI2016】—找相同字符(后缀自动机)
    【AHOI2013】—差异(后缀自动机)
  • 原文地址:https://www.cnblogs.com/lizhiyan-world/p/3740351.html
Copyright © 2011-2022 走看看