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

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

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

(1)创建数据库;
(2)打开数据库;
(3)创建数据库表;
(4)创建数据集的插入接口;
(5)创建数据集的查询接口;
(6)关闭数据库

下面说说使用方法。

首先创建一个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();    } }

更多相关文章

  1. [置顶] Android(安卓)屏幕旋转相关解析
  2. Android(安卓)开源库StickyListHeadersListView来实现ListView列
  3. Android中Okhttp,Volley,Retrofit网络框架优缺点及对比
  4. 短信的收发及在android模拟器之间实践(3)
  5. android listview滑动删除
  6. Android(安卓)Databinding技术由浅入深(4)------Databinding进阶An
  7. Android整合网上资源以及个人对GreenDao数据库框架的理解与使用(
  8. Android(安卓)Parcelable和Serializable的区别
  9. Android官方架构组件介绍之LifeCycle

随机推荐

  1. Android 保存 JNI 层 opencv cvMat 图片
  2. XML中的命名空间问题
  3. Android内核编译
  4. Android图形系统分析与移植 -- 四、Surfa
  5. Android:shape的使用详解(2)
  6. Android AES加密算法,现在实际上
  7. android 触屏反馈原理
  8. android, shape用法和讲解
  9. Android开发常用属性
  10. Android在代码中设置drawableLeft(Right/