免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1933 | 回复: 1
打印 上一主题 下一主题

android SQLite操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-12 22:13 |只看该作者 |倒序浏览
android SQLite操作









使用Android自带的数据库SQLite,包括连接、复制、增删改查等操作。
直接看代码(直接可以运行的)



Java代码
  1. 1.package com.named;  
  2. 2.  
  3. 3.import java.io.FileOutputStream;  
  4. 4.import java.io.IOException;  
  5. 5.import java.io.InputStream;  
  6. 6.import java.io.OutputStream;  
  7. 7.import java.sql.SQLException;  
  8. 8.  
  9. 9.import android.content.Context;  
  10. 10.import android.database.Cursor;  
  11. 11.import android.database.sqlite.SQLiteDatabase;  
  12. 12.import android.database.sqlite.SQLiteException;  
  13. 13.import android.database.sqlite.SQLiteOpenHelper;  
  14. 14.  
  15. 15.public class DataBaseHelper extends SQLiteOpenHelper {  
  16. 16.    private static String DB_PATH = "/data/data/com.named/databases/";  
  17. 17.    private static String DB_NAME = "mydata.db";  
  18. 18.    private static String TB_NAME = "myname";  
  19. 19.    private SQLiteDatabase myDataBase;  
  20. 20.    private final Context myContext;  
  21. 21.  
  22. 22.    public DataBaseHelper(Context context) {  
  23. 23.        super(context, DB_NAME, null, 1);  
  24. 24.        this.myContext = context;  
  25. 25.    }  
  26. 26.  
  27. 27.    /**
  28. 28.     * 创建新的数据库
  29. 29.     * */  
  30. 30.    public void createDataBase() throws IOException {  
  31. 31.        boolean dbExist = checkDataBase();  
  32. 32.        if (dbExist) {  
  33. 33.        } else {  
  34. 34.            this.getReadableDatabase();  
  35. 35.            try {  
  36. 36.                copyDataBase();  
  37. 37.            } catch (IOException e) {  
  38. 38.                throw new Error("Error copying database");  
  39. 39.            }  
  40. 40.        }  
  41. 41.    }  
  42. 42.  
  43. 43.    /**
  44. 44.     * 检查目录是否有数据库
  45. 45.     *  
  46. 46.     * @return
  47. 47.     */  
  48. 48.    private boolean checkDataBase() {  
  49. 49.        SQLiteDatabase checkDB = null;  
  50. 50.        try {  
  51. 51.            String myPath = DB_PATH + DB_NAME;  
  52. 52.            checkDB = SQLiteDatabase.openDatabase(myPath, null,  
  53. 53.                    SQLiteDatabase.OPEN_READONLY);  
  54. 54.        } catch (SQLiteException e) {  
  55. 55.            // database does't exist yet.  
  56. 56.        }  
  57. 57.        if (checkDB != null) {  
  58. 58.            checkDB.close();  
  59. 59.        }  
  60. 60.        return checkDB != null ? true : false;  
  61. 61.    }  
  62. 62.  
  63. 63.    /**
  64. 64.     * 如果没有数据库,就把assets下面的数据库文件拷贝到sd卡data目录下
  65. 65.     **/  
  66. 66.    private void copyDataBase() throws IOException {  
  67. 67.        InputStream myInput = myContext.getAssets().open(DB_NAME);  
  68. 68.        String outFileName = DB_PATH + DB_NAME;  
  69. 69.        OutputStream myOutput = new FileOutputStream(outFileName);  
  70. 70.        byte[] buffer = new byte[1024];  
  71. 71.        int length;  
  72. 72.        while ((length = myInput.read(buffer)) > 0) {  
  73. 73.            myOutput.write(buffer, 0, length);  
  74. 74.        }  
  75. 75.        myOutput.flush();  
  76. 76.        myOutput.close();  
  77. 77.        myInput.close();  
  78. 78.    }  
  79. 79.  
  80. 80.    /**
  81. 81.     * 打开数据库
  82. 82.     *  
  83. 83.     * @throws SQLException
  84. 84.     */  
  85. 85.    public void openDataBase() throws SQLException {  
  86. 86.        String myPath = DB_PATH + DB_NAME;  
  87. 87.        myDataBase = SQLiteDatabase.openDatabase(myPath, null,  
  88. 88.                SQLiteDatabase.OPEN_READONLY);  
  89. 89.    }  
  90. 90.  
  91. 91.    /**
  92. 92.     * 关闭数据库
  93. 93.     */  
  94. 94.    @Override  
  95. 95.    public synchronized void close() {  
  96. 96.  
  97. 97.        if (myDataBase != null)  
  98. 98.            myDataBase.close();  
  99. 99.        super.close();  
  100. 100.    }  
  101. 101.  
  102. 102.    @Override  
  103. 103.    public void onCreate(SQLiteDatabase db) {  
  104. 104.  
  105. 105.    }  
  106. 106.  
  107. 107.    @Override  
  108. 108.    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  109. 109.  
  110. 110.    }  
  111. 111.  
  112. 112.    /**
  113. 113.     * 查询表数据
  114. 114.     *  
  115. 115.     * @return
  116. 116.     */  
  117. 117.    public String query() {  
  118. 118.        String name = "";  
  119. 119.        Cursor cursor = myDataBase.query(TB_NAME, new String[] { "name" }, "id"  
  120. 120.                + " = " + 1, null, null, null, null);  
  121. 121.        while (cursor.moveToNext()) {  
  122. 122.            name = cursor.getString(cursor.getColumnIndex("name"));  
  123. 123.        }  
  124. 124.  
  125. 125.        return name;  
  126. 126.  
  127. 127.    }  
  128. 128.  
  129. 129.    /*
  130. 130.     * 增加
  131. 131.     */  
  132. 132.    public void save() {  
  133. 133.        myDataBase.execSQL("insert into person(name) values (?)",  
  134. 134.                new Object[] { "tom" });  
  135. 135.    }  
  136. 136.  
  137. 137.    /*
  138. 138.     * 更新
  139. 139.     */  
  140. 140.    public void update() {  
  141. 141.        myDataBase.execSQL("update person set name=? where personid=?",  
  142. 142.                new Object[] { "kitty", "1" });  
  143. 143.    }  
  144. 144.  
  145. 145.    /*
  146. 146.     * 删除
  147. 147.     */  
  148. 148.    public void delete(Integer id) {  
  149. 149.        myDataBase.execSQL("delete from person where personid=?",  
  150. 150.                new Object[] { id.toString() });  
  151. 151.    }  
  152. 152.  
  153. 153.}
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-12-23 21:59 |只看该作者
谢谢分享  希望于楼主多多交流
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP