Android之SQLite数据库

来源:互联网 发布:cs1.5优化教程视频 编辑:程序博客网 时间:2024/04/30 10:48

android系统里面已经内置了一个SQLite数据库,它是一种轻型的数据库,这个数据库跟我们以前学的数据库都支持sql语句。也是是遵守ACID的关系型数据库管理系统。

想仔细了解SQLite数据库的操作,请可以去官网去学习
https://developer.android.com/training/basics/data-storage/databases.html

在android用SQLite数据库的几部步骤:

  1. 创建一个类继承SQLiteOpenHelper
  2. 根据SQLiteOpenHelper的getWritableDatabase()或getReadableDatabase()获取数据库
  3. 拿到数据库就可以根据qsl语句来操作

布局文件
activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    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="com.example.edu.androidforsqlite.MainActivity"    android:orientation="vertical"    android:baselineAligned="false">    <EditText        android:id="@+id/name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="请输入"        />    <EditText        android:id="@+id/age"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="请输入"        />    <Button      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="插入"      android:onClick="insert"        android:elevation="0dp" />    <Button      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:text="查询"      android:onClick="select"      /></LinearLayout>

我们继承SQLiteOpenHelper的MyHelper代码

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/**这是数据库帮助类 * Created by Administrator on 2016/9/30. */public class MyHelper extends SQLiteOpenHelper {    /**     * 这是建person表语句     */    private String sql = "create table person (" +            " id integer primary key autoincrement " +            ", name " +            ", age )" ;    public MyHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {       super(context, name, factory, version);    }    /**     * 数据库只有第一次创建时调用     * @param db     */    @Override    public void onCreate(SQLiteDatabase db) {       db.execSQL(sql);    }    /**     * 只有数据库版本更新时调用     * @param db     * @param oldVersion     * @param newVersion     */    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }}

MainActivity代码

import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.example.edu.androidforsqlite.edu.jju.help.MyHelper;public class MainActivity extends AppCompatActivity {    private SQLiteDatabase db;    private MyHelper helper;    private EditText mEtName, mEtAge;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);       helper=new MyHelper(MainActivity.this,"song.db",null,1);       db = helper.getWritableDatabase();//返回一个SQLiteDatabase实例        initWidgets();    }    /**     * 初始化各控件     */    private void initWidgets() {        mEtAge = (EditText) findViewById(R.id.age);        mEtName = (EditText) findViewById(R.id.name);    }    /**     * 插入数据     *     * @param view     */    public void insert(View view) {        String name = mEtName.getText().toString();        String age = mEtAge.getText().toString();        db.execSQL("insert into  person (name,age)"                        + "values(?,?)",                new String[]{name, age}        );        Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_SHORT).show();    }    /**     * 查询所有数据     */    public void select (View view){        db.rawQuery("select * from person",null);        Toast.makeText(MainActivity.this,"查询成功",Toast.LENGTH_SHORT).show();    }}

运行后,我们就可以看到song.db数据库了,然后导出数据库,可以通过第三方软件打开
这里写图片描述

然后通过sqlite3去查看数据,依次输入命令。
这里写图片描述

MainActivity代码

import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.example.edu.androidforsqlite.edu.jju.help.MyHelper;public class MainActivity extends AppCompatActivity {    private SQLiteDatabase db;    private MyHelper helper;    private EditText mEtName, mEtAge;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);       helper=new MyHelper(MainActivity.this,"song.db",null,1);       db = helper.getWritableDatabase();//返回一个SQLiteDatabase实例        initWidgets();    }    /**     * 初始化各控件     */    private void initWidgets() {        mEtAge = (EditText) findViewById(R.id.age);        mEtName = (EditText) findViewById(R.id.name);    }    /**     * 插入数据     *     * @param view     */    public void insert(View view) {        String name = mEtName.getText().toString();        String age = mEtAge.getText().toString();        db.execSQL("insert into  person (name,age)"                        + "values(?,?)",                new String[]{name, age}        );        Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_SHORT).show();    }    /**     * 查询所有数据     */    public void select (View view){        db.rawQuery("select * from person",null);        Toast.makeText(MainActivity.this,"查询成功",Toast.LENGTH_SHORT).show();    }    /**     * 修改数据     */    public void update(View view){        //我传进去的数据写死了,我只是给演示下。        db.execSQL("update person set name=?,age=?"        ,new String[]{"xiaosong","34"}        );    }    /**     * 删除数据     * @param view     */    public void delete(View view){        //根据名字来删除,只是演示下怎么用,关键学会sql语句        db.execSQL("delete from person where name=?"        ,new String[]{"song"}        );    }}

其实android自带了一些增删改查的方法

增加数据:各参数的意思
1,表名
2, 就是数据库不允许我们插入空行,要给指定一列,当插入数据真为空时,就会为这列设为null。官方的解释如下:
这里写图片描述
3,是以键值对的方式添加。键必须是你的属性
insert(String table, String nullColumnHack, ContentValues values)
删除数据:各参数的意思
1, 表名 2,条件 3, 条件的值,
delete(String table, String whereClause, String[] whereArgs)
修改数据:各参数的意思
1,表名 2,是你修改的值,是以键值对方式修改的。3, 条件 4,第三个参数的值
update(String table, ContentValues values, String whereClause, String[] whereArgs)

源码下载:
https://github.com/songshuilin/AndroidForBlog/tree/master/androidforsqlite

8 6
原创粉丝点击