设为首页 收藏本站
查看: 1051|回复: 0

[经验分享] Android 操作SQLite数据库(初步)-在程序中删除数据库

[复制链接]

尚未签到

发表于 2016-12-1 11:02:20 | 显示全部楼层 |阅读模式
  特别强调一下,Android是怎么删除数据库的,因为SQLite没有提供drop database XX的指令,所以我现在是按文件来删除数据库

  刚刚学习Android关于数据库的操作,现在就将我学习的这点知识汇总一下,高手绕道哈。
  关于数据库操作无非就是增删改查,下面就将这几个模块实现了。
  

  JAVA code

package cn.qiuzhping.study;
import java.io.File;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SQLiteStudy extends Activity {
private Button btn_create = null;
private Button btn_update = null;
private Button btn_insert = null;
private Button btn_query = null;
private Button btn_delete = null;
// private SQLiteUtil sqliteUtil = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sqlite_study);
btn_create = (Button) findViewById(R.id.btn_create);
btn_create.setOnClickListener(new Btn_Create());
btn_update = (Button) findViewById(R.id.btn_update);
btn_update.setOnClickListener(new Btn_Update());
btn_insert = (Button) findViewById(R.id.btn_insert);
btn_insert.setOnClickListener(new Btn_Insert());
btn_query = (Button) findViewById(R.id.btn_query);
btn_query.setOnClickListener(new Btn_Query());
btn_delete = (Button) findViewById(R.id.btn_delete);
btn_delete.setOnClickListener(new Btn_Delete());
}
private class SQLiteUtil extends SQLiteOpenHelper {
private static final int VERSION = 1;// 正数
private String sql = "create table user(id int,name vachar(20))";
public SQLiteUtil(Context context, String name, CursorFactory factory,
int version) {
// 从左到右依次是context是Activity、name数据库表名、factory可选的数据库游标工厂类,
// 当查询(query)被提交时,该对象会被调用来实例化一个游标。默认为null。version是数据版本号
super(context, name, factory, version);
}
public SQLiteUtil(Context context, String name, int version) {// 调用4个参数的构造方法
this(context, name, null, VERSION);
}
public SQLiteUtil(Context context, String name) {// 调用3个参数的构造方法
this(context, name, VERSION);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// 建立数据库
Log.i("SQLiteUtil onCreate", "建立数据库");
arg0.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
Log.i("SQLiteUtil onUpgrade", "更新数据库!!");
// arg0.execSQL(sql);
}
}
public void deleteFile(File file) {
if (file.exists()) { // 判断文件是否存在
if (file.isFile()) { // 判断是否是文件
// 设置属性:让文件可执行,可读,可写
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
file.delete(); // delete()方法
} else if (file.isDirectory()) { // 否则如果它是一个目录
File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
this.deleteFile(files); // 把每个文件 用这个方法进行迭代
}
}
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
file.delete();
Log.i("deleteFile", file.getName() + "成功删除!!");
} else {
Log.i("deleteFile", file.getName() + "不存在!!!");
}
}
class Btn_Delete implements OnClickListener {
@Override
public void onClick(View arg0) {
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getWritableDatabase();
Log.i("Btn_Delete", "delete = " + db.delete("user", null, null));
File file1 = new File("/data/data/cn.qiuzhping.study/databases/testDB1");
deleteFile(file1);
File file2 = new File("/data/data/cn.qiuzhping.study/databases/testDB1-journal");
deleteFile(file2);
}
}
class Btn_Create implements OnClickListener {
@Override
public void onClick(View arg0) {
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getReadableDatabase();
}
}
class Btn_Update implements OnClickListener {
@Override
public void onClick(View arg0) {
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zhansan");
Log.i("Btn_Update ",
"update="
+ db.update("user", values, "id=?",
new String[] { "1" }));
}
}
class Btn_Insert implements OnClickListener {
@Override
public void onClick(View arg0) {
ContentValues values = new ContentValues();
for (int i = 1; i <= 20;) {
values.put("id", i);
values.put("name", "qiuzhping" + i);
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this,
"testDB1");
SQLiteDatabase db = sqliteUtil.getWritableDatabase();
Log.i("Btn_Insert",
"insert = " + db.insert("user", null, values));
i++;
}
}
}
class Btn_Query implements OnClickListener {
@Override
public void onClick(View arg0) {
ContentValues values = new ContentValues();
values.put("name", "qiuzhping");
SQLiteUtil sqliteUtil = new SQLiteUtil(SQLiteStudy.this, "testDB1");
SQLiteDatabase db = sqliteUtil.getReadableDatabase();
Cursor cursor = db.query("user", new String[] { "id", "name" },
null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(0);// 获取ID
String name = cursor.getString(1);// 获取name
Log.i("Btn_Query", "id = " + id + "  name = " + name);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.sqlite_study, menu);
return true;
}
}



xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SQLiteStudy" >
<Button
android:id="@+id/btn_create"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="创建数据库" />
<Button
android:id="@+id/btn_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_create"
android:text="更新" />
<Button
android:id="@+id/btn_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_update"
android:text="插入" />
<Button
android:id="@+id/btn_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_insert"
android:text="查询" />
<Button
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_query"
android:text="删除数据库" />
</RelativeLayout>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308154-1-1.html 上篇帖子: Android SQLite 开发教程(5): 导出数据库到XML 文件 下篇帖子: Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表