Android之SQLite数据库

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
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值