该工程的功能是实现关于数据库的操作,即creat、update、insert、query、delete

调试的时候请用模拟器,用真机调试的时候进入cmd-adb shell,再进入cd data/data的时候会显示permission denied

以下的代码是MainActivity.java中的代码

package com.example.sqlite;

import com.example.sqlite.db.DataBaseHelper;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends Activity { private Button createDBButton ;
private Button insertDBButton ;
private Button updateDBButton ;
private Button queryDBButton ;
private Button deleteDBButton ;
private EditText input_id ;
private EditText input_name ;
private TextView test ; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//此处为创建数据库, 通过按钮监听器来实现
createDBButton = (Button) findViewById(R.id.creatDB);
createDBButton.setOnClickListener(new CreateDBListener());
//此处为插入数据到数据库中
insertDBButton = (Button) findViewById(R.id.insert);
insertDBButton.setOnClickListener(new InsertListener());
//此处为更新数据表
updateDBButton = (Button) findViewById(R.id.update);
updateDBButton.setOnClickListener(new updateListener());
//此处为更新数据表
queryDBButton = (Button) findViewById(R.id.query);
queryDBButton.setOnClickListener(new queryListener());
//此处为删除数据内容
deleteDBButton = (Button) findViewById(R.id.delete);
deleteDBButton.setOnClickListener(new deleteListener());
//此处为显示查询结果
test = (TextView) findViewById(R.id.result);
test.setText("name") ;
//此处为添加数据的选项
//input_id = (EditText) findViewById(R.id.input_id);
//input_name = (EditText) findViewById(R.id.input_name);
} class CreateDBListener implements OnClickListener{
@Override
public void onClick(View v) {
// 此处为调用另外一个类中的方法来创建数据库, 或者直接来创建数据库 String db_name = "test_mars_db_one" ;
System.out.println("Create");
DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this, db_name) ;
SQLiteDatabase db = dbHelper.getReadableDatabase() ;
}
} class InsertListener implements OnClickListener{ @Override
public void onClick(View v) {
//生成一个ContentValues对象
ContentValues values = new ContentValues() ;
//想该对象当中插入键值对,其中键是列名,值是希望插入到这列的值,值必须
values.put("id", 1) ;
values.put("name", "zhangsan") ;
System.out.println("Insert");
DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this, "test_mars_db_one") ;
SQLiteDatabase db = dbHelper.getWritableDatabase() ;
//调用insert方法, 就可以将数据插入到数据库中
db.insert("user", null, values) ;
} } class updateListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// 此处为更新数据内容
System.out.println("Update");
DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this, "test_mars_db_one") ;
SQLiteDatabase db = dbHelper.getWritableDatabase() ;
ContentValues values = new ContentValues() ;
values.put("name", "zhangsanfeng") ;
//第一个参数为要更新的表名
//第二个参数为一个ContentValues对象
//第三个参数是where语句
db.update("user", values, "id=?", new String[]{"1"}) ;
}
} class queryListener implements OnClickListener{
@Override
public void onClick(View v) {
// 此处为查询数据内容, 并用到cursor来实现
System.out.println("query");
DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this, "test_mars_db_one") ;
SQLiteDatabase db = dbHelper.getWritableDatabase() ;
Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"2"},null,null,null,null) ;
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name")) ;
System.out.print("query---> " + name) ;
//name += name ;
test.setText(name) ;
}
}
} class deleteListener implements OnClickListener{
public void onClick(View v) { //此处为实现删除数据
System.out.println("delete");
DataBaseHelper dbHelper = new DataBaseHelper(MainActivity.this, "test_mars_db_one") ;
SQLiteDatabase db = dbHelper.getWritableDatabase() ; //删除特定条件的数据
//db.delete("user","id=?",new String[]{"2"});
//删除所有数据
db.delete("user",null,null); }
} }

以下的代码是DataBaseHelper.java中的代码

package com.example.sqlite.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper; //DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能
//第一,getReadableDatabase(),getWriteableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作
//第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作 public class DataBaseHelper extends SQLiteOpenHelper { private static final int VERSION = 1;
//在SQLiteOpenHelper的子类当中,必须有该构造函数
public DataBaseHelper(Context context, String name, CursorFactory factory,
int version) {
//必须通过super调用父类当中的构造函数
super(context, name, factory, version);
// TODO Auto-generated constructor stub
} public DataBaseHelper(Context context,String name){
this(context,name,VERSION);
} public DataBaseHelper(Context context,String name,int version){
this(context,name,null,version);
} //该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabase对象的时候,才会调用该方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("Create a Database");
//execSQL函数用于执行SQL语句
db.execSQL("create table user(id int,name varchar(20))");
System.out.println("Create a Database successful");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("update a DataBase");
} }

以下的代码是activity_main.xml中的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" > <Button
android:id="@+id/creatDB"
android:text="creatDatabase"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/> <Button
android:id="@+id/update"
android:text="updateDatabase"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/> <Button
android:id="@+id/insert"
android:text="Insert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/> <Button
android:id="@+id/query"
android:text="query"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/> <Button
android:id="@+id/delete"
android:text="delete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/> <TextView
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> </LinearLayout>

利用adb shell管理虚拟机的数据库

Google Android操作系统内核基于Linux,其数据库采用了sqlite。sqlite是一个开源的小巧的大小小于500KB的微型数据库系统。

Android Debug Bridge(adb)是Android下的一个让你管理手机或者手机虚拟机的多功能工具。

本文主要介绍如何在虚拟机上操作sqlite数据库。

Google的Android的开发包内有个虚拟机,启动虚拟机后,在window命令行窗口内输入adb shell即可登入设备,我们就拥有了一个Linux环境。

图1:Android虚拟机

图2:adbshell登入Linux系统

Android把数据都存放在data/data目录下。

我们使用cd命令转到data/data目录下:

cd /data/data

ls显示所有数据

你会看到像我目录一样有个mars.sqlite3文件夹。

cd mars.sqlite3/databases进入mars.sqlite3/databases目录

ls命令你会看到test_mars_db,这就是我们的创建的测试数据库文件

在#提示符下输入以下命令sqlite3 test_mars_db;登入数据库

图3:登入sqlite3数据库

这个命令会打开test_mars_db数据库,若test_mars_db数据库不存在,则会新建一个名为

test_mars_db的数据库。(注意数据库名大小写有区别)

在sqlite>提示符下输入

.help这个命令让我们看到许多命令

.tables查看所有表,例如我的系统里有android_metadata和user两个表

查询表user数据内容,我们输入

Select * from user;我们查出三条数据。

图4:显示查询结果

这个数据库的显示方式让我们习惯了Oralce,看得很不舒服,输入

以下两个命令,让我们改变这种显示模式。

.mode column

.header on

再输入select * from user;我们看着舒服多了。

图5:改变数据显示模式

.exit命令退出sqlite,返回到#提示符。

在#提示符下输入exit退出Linux。

Android学习笔记——SQLite的更多相关文章

  1. Android学习笔记--Sqlite数据库

    前几天学习了Android中的数据存储,包括文件存储,SharedPreferences存储,还有就是Acndroid中的特色:SQLite数据库存储了.让我比较惊讶的是Android中竟然内嵌了一个 ...

  2. (转)Android学习笔记---SQLite介绍,以及使用Sqlite,进行数据库的创建,完成数据添删改查的理解

    原文:http://blog.csdn.net/lidew521/article/details/8655229 1.SQLite介绍:最大特点是,无数据类型;除了可以使用文件或SharedPrefe ...

  3. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  4. 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode

    目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...

  5. 【转】Pro Android学习笔记(七):了解Content Provider(下上)

    我们通过一个Content Provider小例子进行详细说明.数据源是一个SQLite数据库,名字为books.db,该数据库只含有一个表格,名字为books.表格中含有name,isbn,auth ...

  6. 【转】Pro Android学习笔记(五):了解Content Provider(上)

    Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider ...

  7. udacity android 学习笔记: lesson 4 part a

    udacity android 学习笔记: lesson 4 part a 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

  8. 七、Android学习第六天——SQLite与文件下载(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 七.Android学习第六天——SQLite与文件下载 SQLite SQ ...

  9. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

随机推荐

  1. Java网络编程——概述

    一.网络模型 OSI七层模型 应用层 表示层 会话层 传输层: 网络层: 链路层 物理层:比特流 TCP/IP四层模型 应用层 传输层:数据包,TCP/UDP 网络层:数据帧 物理层:比特流 二.网络 ...

  2. Linux 性能优化之 IO 子系统

    本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO 性能检测工具. 本文的大部分内容来自 IBM Redbook - Linux Performance and Tun ...

  3. 使用D3绘制图表(4)--面积图表

    面积图表的绘制就是在曲线图表的基础上做一点小小的改动.其他的代码跟绘制曲线图表没有什么区别,下面有黄色背景颜色的代码就是修改的,是不是很简单,第一句修改的地方就是把之前绘制线的函数(line)改成了绘 ...

  4. re模块(正则表达式)

    re 模块:正则表达式import re 内置模块: 1> re.match(pattern,string) pattern:就是正则表达式 string:被操作的对象 match,search ...

  5. codevs1227

    费用流,其实是求传输一个容量为k的流的最大费用.主要是建图.原点为0,和1连上一条容量为k,费用为0的边,中间每个点拆成两个1和2,连上一条边,容量为k,费用为c,再连一条容量为比k大,费用为0的边, ...

  6. 使用navicat连接mysql要报10038的错误

    1.mysql的设置 (1)授权mysql>grant all privileges on *.*  to  'root'@'%'  identified by 'youpassword'  w ...

  7. 【bzoj1597】 土地购买

    http://www.lydsy.com/JudgeOnline/problem.php?id=1597 (题目链接) 题意 购买n个矩形,每块土地的价格是它的面积,但可以同时购买多快土地. 这些土地 ...

  8. Python基础4:数据类型:数字 字符串 日期

    [ Python 数据类型 ] 我们知道,几乎任何编程语言都具有数据类型:常见的数据类型有:字符串.整型.浮点型以及布尔类型等. Python也不例外,也有自己的数据类型,主要有以下几种: 1.数字: ...

  9. UVa 673 Parentheses Balance

    一个匹配左右括号的问题 /*UVa 673 Parentheses Balance*/ #include<iostream> #include<algorithm> #incl ...

  10. [iOS 图像处理相关]

    //使用CGImage获取并修改图片像素 #define Mask8(x) ( (x) & 0xFF ) #define R(x) ( Mask8(x) ) #define G(x) ( Ma ...