sqlite是Android中内置的轻型数据库,可以使用sql命令,是一种完善的,轻型的数据库。

在Android中,每个应用程序都可以有自己的数据库实例,默认情况下是只能被自己访问的。

数据库存放在Android设备的/data/data//databases文件夹下。可以使用内容提供器在应用程序间共享数据库信息。使用sqlite数据库可分为以下步骤:

(1)创建数据库;

(2)打开数据库;

(3)创建数据库表;

(4)创建数据集的插入接口;

(5)创建数据集的查询接口;

(6)关闭数据库。close()。

 

下面说说使用方法。

首先创建一个MyDatebasehelper类,继承SQLiteOpenHelper.如下:

package mountain_hua.learn_sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.widget.Toast;/** * Created by dhs on 2018/6/4. */public class MyDatabaseHelper extends SQLiteOpenHelper {    //用户表,包含name和pwd两个字段,name为主键    public static final String CREATE_usersDB = "create table usersDB(" +            "name text primary key," +            "pwd text)";    private Context mContext;    //构造方法:    // 第一个参数Context上下文,    // 第二个参数数据库名,    // 第三个参数cursor允许我们在查询数据的时候返回一个自定义的光标位置,一般传入的都是null,    // 第四个参数表示目前库的版本号(用于对库进行升级)    public  MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory , int version){        super(context,name ,factory,version);        mContext = context;    }    @Override    public void onCreate(SQLiteDatabase db) {        //调用SQLiteDatabase中的execSQL()执行建表语句。        db.execSQL(CREATE_usersDB);        //创建成功        Toast.makeText(mContext, "创建成功", Toast.LENGTH_SHORT).show();    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        //更新表        db.execSQL("drop table if exists usersDB");        onCreate(db);    }}

 

接下来开始测试:

 

添加数据put:

MainActivity:

package mountain_hua.learn_sqlite;    import android.content.ContentValues;  import android.database.Cursor;  import android.database.sqlite.SQLiteDatabase;  import android.support.v7.app.AppCompatActivity;  import android.os.Bundle;  import android.view.View;  import android.widget.Button;  import android.widget.EditText;  import android.widget.ListView;  import android.widget.SimpleAdapter;  import android.widget.Toast;    import java.util.ArrayList;  import java.util.HashMap;    public class MainActivity extends AppCompatActivity {      private MyDatabaseHelper dbHelper;  //数据库      private Button add;     //添加按钮      private String name,pwd;//名字和密码               @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);              add=(Button)findViewById(R.id.button);                 lv=(ListView)findViewById(R.id.listview);              //添加按钮:          add.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View v) {                  //给数据库添加信息                  name=((EditText)findViewById(R.id.editText)).getText().toString();                  pwd=((EditText)findViewById(R.id.editText2)).getText().toString();                  addinfo();              }          });                 //数据库添加函数:      public void addinfo(){          //第二个参数是数据库名          dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",,1);          SQLiteDatabase db = dbHelper.getWritableDatabase();          ContentValues values = new ContentValues();          values.put("name", name);          values.put("pwd", pwd);          //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象          db.insert("usersDB",,values);      }}

在activity_main中添加两个EditText和一个Button;然后添加数据

点击添加按钮后,Toast出了创建成功,说明执行了数据库的Oncreat方法,数据库创建成功:

@Override    public void onCreate(SQLiteDatabase db) {        //调用SQLiteDatabase中的execSQL()执行建表语句。        db.execSQL(CREATE_usersDB);        //创建成功        Toast.makeText(mContext, "创建成功", Toast.LENGTH_SHORT).show();    }

以后再点击按钮不会出现创建成功的Toast,因为数据库已经存在。

 

查询数据query

我们先继续添加一个查询按钮和一个listview,把要查询的数据显示在listview里面:

先配置listview适配器,显示两行文字。第一行为name,第二行为pwd.

查询函数:

dbHelper = new MyDatabaseHelper(MainActivity.this, "数据库名", null, 1);        SQLiteDatabase db = dbHelper.getWritableDatabase();        Cursor cursor = db.query("表名", null, null, null, null, null, null);        if (cursor != null && cursor.getCount() > 0) {            while(cursor.moveToNext())                cursor.getString(此处为列号)//列序号从0开始,0,1,2,3....        }        cursor.close();        db.close();

或者用sql语句:

dbHelper = new MyDatabaseHelper(MainActivity.this,"数据库名",null,1);        SQLiteDatabase db = dbHelper.getWritableDatabase();        Cursor cursor = db.rawQuery("select * from 表名", null);        while (cursor.moveToNext()) {            String name= cursor.getString(列序号号);//列序号从0开始,0,1,2,3....                    }        cursor.close();        db.close();

 

现在的MainActivity变为:

package mountain_hua.learn_sqlite;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;public class MainActivity extends AppCompatActivity {    private MyDatabaseHelper dbHelper;  //数据库    private Button add,query;     //添加按钮和查询按钮    private String name,pwd;//名字和密码    private ListView lv;    private String getName,getPwd;//从数据库得到的名字和密码    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        add=(Button)findViewById(R.id.button);        query=(Button)findViewById(R.id.button2);        lv=(ListView)findViewById(R.id.listview);        //添加按钮:        add.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //给数据库添加信息                name=((EditText)findViewById(R.id.editText)).getText().toString();                pwd=((EditText)findViewById(R.id.editText2)).getText().toString();                addinfo();            }        });        //查询按钮:        query.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //给数据库添加信息                queryinfo();                         }        });    }    //数据库添加函数:    public void addinfo(){        //第二个参数是数据库名        dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);        SQLiteDatabase db = dbHelper.getWritableDatabase();        ContentValues values = new ContentValues();        values.put("name", name);        values.put("pwd", pwd);        //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象        db.insert("usersDB",null,values);    }    //数据库查询函数:    public void queryinfo(){        final ArrayList> listItem = new ArrayList >();/*在数组中存放数据*/        //第二个参数是数据库名        dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);        SQLiteDatabase db = dbHelper.getWritableDatabase();        Cursor cursor = db.rawQuery("select * from usersDB", null);        //查询语句也可以这样写        //Cursor cursor = db.query("usersDB", null, null, null, null, null, null);        if (cursor != null && cursor.getCount() > 0) {            while(cursor.moveToNext()) {                getName = cursor.getString(0);                getPwd = cursor.getString(1);                HashMap map = new HashMap();                map.put("name", getName);                map.put("pwd", getPwd);                listItem.add(map);                //new String  数据来源, new int 数据到哪去                SimpleAdapter mSimpleAdapter = new SimpleAdapter(MainActivity.this,listItem,R.layout.simple_adapter_item,                        new String[] {"name","pwd"},                        new int[] {R.id.ItemText1,R.id.ItemText2});                lv.setAdapter(mSimpleAdapter);//为ListView绑定适配器            }        }        cursor.close();        db.close();    }    }

 

我又添加了几条数据,查询结果:

 

 

删除delete:

继续添加一个删除按钮,监听事件是删除第一个输入框EditText对应的数据库元素:

删除函数:

name=((EditText)findViewById(R.id.editText)).getText().toString();                dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);                SQLiteDatabase db = dbHelper.getWritableDatabase();                db.delete("usersDB","name=?",new String[] {name});                db.close();

 

删除之后我们再次点查询,如图:

 

 

修改update:

同上,先添加个更新按钮:监听事件是对输入框对应的数据库数据的更新

 

更新函数:

//更新数据库                name=((EditText)findViewById(R.id.editText)).getText().toString();                pwd=((EditText)findViewById(R.id.editText2)).getText().toString();                dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);                SQLiteDatabase db = dbHelper.getWritableDatabase();                ContentValues values = new ContentValues();                values.put("name", name);                values.put("pwd", pwd);                db.update("usersDB", values, "name=?", new String[]{name});                db.close();

 

当我们更新之后再点查询,如图所示:

 

最终代码:

MainActivity:

package mountain_hua.learn_sqlite;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;public class MainActivity extends AppCompatActivity {    private MyDatabaseHelper dbHelper;  //数据库    private Button add,query,delete,update;     //添加按钮和查询按钮和删除按钮和更新按钮    private String name,pwd;//名字和密码    private ListView lv;    private String getName,getPwd;//从数据库得到的名字和密码    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        add=(Button)findViewById(R.id.button);        query=(Button)findViewById(R.id.button2);        delete=(Button)findViewById(R.id.button3);        update=(Button)findViewById(R.id.button4);        lv=(ListView)findViewById(R.id.listview);        //添加按钮:        add.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //给数据库添加信息                name=((EditText)findViewById(R.id.editText)).getText().toString();                pwd=((EditText)findViewById(R.id.editText2)).getText().toString();                addinfo();            }        });        //查询按钮:        query.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //给数据库添加信息                queryinfo();                //new String  数据来源, new int 数据到哪去            }        });        //删除按钮:        delete.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //删除数据库                name=((EditText)findViewById(R.id.editText)).getText().toString();                dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);                SQLiteDatabase db = dbHelper.getWritableDatabase();                db.delete("usersDB","name=?",new String[] {name});                db.close();            }        });        //更新按钮:        update.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //更新数据库                name=((EditText)findViewById(R.id.editText)).getText().toString();                pwd=((EditText)findViewById(R.id.editText2)).getText().toString();                dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);                SQLiteDatabase db = dbHelper.getWritableDatabase();                ContentValues values = new ContentValues();                values.put("name", name);                values.put("pwd", pwd);                db.update("usersDB", values, "name=?", new String[]{name});                db.close();            }        });    }    //数据库添加函数:    public void addinfo(){        //第二个参数是数据库名        dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);        SQLiteDatabase db = dbHelper.getWritableDatabase();        ContentValues values = new ContentValues();        values.put("name", name);        values.put("pwd", pwd);        //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象        db.insert("usersDB",null,values);    }    //数据库查询函数:    public void queryinfo(){        final ArrayList> listItem = new ArrayList >();/*在数组中存放数据*/        //第二个参数是数据库名        dbHelper = new MyDatabaseHelper(MainActivity.this,"usersDataBase",null,1);        SQLiteDatabase db = dbHelper.getWritableDatabase();        Cursor cursor = db.rawQuery("select * from usersDB", null);        //查询语句也可以这样写        //Cursor cursor = db.query("usersDB", null, null, null, null, null, null);        if (cursor != null && cursor.getCount() > 0) {            while(cursor.moveToNext()) {                getName = cursor.getString(0);                getPwd = cursor.getString(1);                HashMap map = new HashMap();                map.put("name", getName);                map.put("pwd", getPwd);                listItem.add(map);                //new String  数据来源, new int 数据到哪去                SimpleAdapter mSimpleAdapter = new SimpleAdapter(MainActivity.this,listItem,R.layout.simple_adapter_item,                        new String[] {"name","pwd"},                        new int[] {R.id.ItemText1,R.id.ItemText2});                lv.setAdapter(mSimpleAdapter);//为ListView绑定适配器            }        }        cursor.close();        db.close();    }}

布局文件:

activity_main:

<?xml version="1.0" encoding="utf-8"?>            

listview适配器simple_adapter_item:

<?xml version="1.0" encoding="utf-8"?>        

附demo,解压后用Android studio可以直接打开:

sqlite使用例子

Android 操作SQLite基本用法

另推荐一篇sqlite的专栏:

sqlite专栏

更多相关文章

  1. Android(安卓)Alert Dialog解决点击按钮对话框不关闭的问题
  2. 【Android(安卓)开发工具】模拟器中的战斗机Genymotion
  3. Android之SQlite数据库
  4. Android(安卓)Nine Patch图片及按钮背景
  5. Android开发实践:用PopupWindow实现自定义Dailog
  6. Android使用selector自定义按钮
  7. android 数据存储
  8. RelativeLayout的基本对齐方式
  9. Android实现高定制化日历控件

随机推荐

  1. android系统学习笔记二
  2. android之蓝牙操作(二)
  3. Android 用MediaCodec实现视频硬解码
  4. Android四大组件之activity之间带数据跳
  5. Android中ListView多次调用getView
  6. 【Android开发】Toolbar与标题居中
  7. android线程相关1
  8. Android之WebView教程实例汇总
  9. Android控件开发之Gallery
  10. Android Studio com.android.support:per