SQLite是Android自带的一款轻量级的关系型数据库,它的运算速度非常快,且占用很少的资源,因而很适合在移动设备上使用。对于不熟悉连接外部数据库和添加删除数据的Android开发入门者来说,SQLite比一般的数据库要简单得多,不用设置用户名和密码就可以使用。

1. 安装

在使用之前需要前往AndroidSDK\platform-tools目录下找到sqlite3.exe文件,双击可进入Dos界面。

将上述platform-tools所在目录添加到环境变量配置中Path下,即可完成完成配置。

验证成功安装的方法:win+R输入cmd记入Dos界面,输入SQLite3,若出现以下界面就表示已成功安装。

2. 创建数据库

要使用SQLite,就必须谈到SQLiteOpenHelper这个类了,它是一个抽象类,我们需要创建一个自己的主类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是OnCreate()和onUpgrade(),我们需要在自己的类下重写这两个方法。

同时SQLiteOpenHelper还有两个重要的实例方法:getReadableDatabase()和getWriteableDatabase()。这两个方法均可创建或打开一个现有数据库,并返回一个可对数据库进行读写操作的对象。区别在于:当数据库不可写入的时候(如磁盘空间已满),getReadableDatabase()方法返回的对象将只以只读方式打开数据库,而getWriteableDatabase()方法将出现异常。

接下来可以进行实践了,我们创建一个名为Land.db的数据库,然后在这个数据库中新建一张Land表,表中有一些自定义的列。定义列时按照SQL语句进行。对于数据类型,integer表示整型,real表示浮点型,text表示文本类型,blob表示二进制类型。

​public class DatabaseHelper extends SQLiteOpenHelper {    public static final String CREATE_LAND = "create table Land ("            //primary key设置为主键,autoincrement关键字表示该列是自增长的            + "area_id text primary key autoincrement,"              + "flag text,"            + "plot integer,"            + "land_position_id text,"            + "land_position_acreage real)";    private Context mContext;    public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super( context, name, factory, version );        mContext = context;    }    public void onCreate(SQLiteDatabase db){        //调用SQLiteDatabase的execSQL()方法执行建表语句        db.execSQL(CREATE_LAND);        //弹出一个Toast提示创建成功        Toast.makeText(mContext, "Create succeeded.", Toast.LENGTH_SHORT).show();    }    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){    }​

对应布局文件,可以自己设计一个Button,这里不多做赘述。最后修改MainAcivity(不一定是主活动,只要是与布局对应的Java均可,这里以MainActivity为例)中的代码:

public class MainActivity extends AppCompatActivity {    private DatabaseHelper dbHelper;    protected void onCreate(Bundle savedInstanceState){        super.onCreate( savedInstanceState );        setContentView( R.layout.activity_main );        //指定数据库名为"Land.db",版本号为1        dbHelper = new DatabaseHelper( this, "Land.db" ,null,1 );        //指定对应于布局文件夹中的Button create_database        Button createDatabase = (Button) findViewById( R.id.create_database );        //设计点击事件,点击create_database Button后弹出Toast显示创建成功        createDatabase.setOnClickListener( new View.OnClickListener() {            @Override            public void onClick(View v) {                dbHelper.getWritableDatabase();            }        } );    }}

2. 添加数据

SQLiteDatabase中提供了一个insert()方法专门用于添加数据。它接受3个参数,第一个是表名,即我们想要添加数据的表。第二个是在未指定添加数据的情况下给某些可为空的列自动赋值null,我们一般传入null即可。第三个是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,我们只需要将表中的每个列名以及相应的待添加数据传入即可。

接下来进行实践。在layout中的activity_main.xml添加一个id为add_data,名为Add data的Button。

接着修改MainAcivity中的代码:

public class MainActivity extends AppCompatActivity {    private DatabaseHelper dbHelper;    protected void onCreate(Bundle savedInstanceState){        super.onCreate( savedInstanceState );        setContentView( R.layout.activity_main );        dbHelper = new DatabaseHelper( this, "Land.db" ,null,2);        Button createDatabase = (Button) findViewById( R.id.create_database );        Button addData = (Button) findViewById( R.id.add_data );        createDatabase.setOnClickListener( new View.OnClickListener() {            @Override            public void onClick(View v) {                dbHelper.getWritableDatabase();            }        } );        addData.setOnClickListener( new View.OnClickListener(){            @Override            public void onClick(View v){                SQLiteDatabase db = dbHelper.getWritableDatabase();                ContentValues values = new ContentValues();                //添加第一条数据                values.put("area_id","A");                values.put("flag","A1");                values.put("plot",001);                values.put("land_position_id","A1001");                values.put("land_position_acreage",0.5);                db.insert( "Land",null,values ); //插入第一条数据                values.clear();                //添加第二条数据                values.put("area_id","A");                values.put("flag","A1");                values.put("plot",002);                values.put("land_position_id","A1002");                values.put("land_position_acreage",0.4);                db.insert( "Land",null,values ); //插入第二条数据            }        } );    }}

 在添加数据按钮的点击事件里,我们先获取了SQLiteDatabase对象,然后使用ContentValues来对要添加的数据进行组装。

 

 

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. android EventBus学习记录
  5. Android(安卓)中Canvas.drawBitmap()的使用
  6. 2011/06/13 android使用html做UI的方法---js与java的相互调用
  7. 深入理解Android(4)——理解Android中的JNI(下)
  8. Android消息机制(Handler)——深入源码解析
  9. android一些概念和知识

随机推荐

  1. Android多媒体开发高级编程
  2. 如何开启cm android自带浏览器的谷歌书签
  3. Android(安卓)内存泄漏调试
  4. 读取android根目录下的文件或文件夹
  5. 2011.07.20——— android 获得当前view
  6. Android Stuido 更新问题
  7. android获取系统wifi状态等
  8. android TextView的使用总结
  9. Android 手机防火防源码(DroidWall)
  10. Android与Javascript交互之入门