Android中SQLite的使用(简单数据存入与读取)

原创 2018年02月03日 20:55:20
一,概要

先看demo,最后又讲解。

二,小demo
     效果图:

          

     实现:

               视图层:

        testsqlite.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btn_w"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="155dp"
        android:text="写入" />

    <Button
        android:id="@+id/btn_r"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/btn_w"
        android:layout_centerVertical="true"
        android:text="查询" />

</RelativeLayout>

write.xml:

        

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et_name"
        android:gravity="center"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_marginTop="100dp"
        android:hint="姓名"
        android:inputType="textPersonName" />

<RadioGroup
    android:layout_marginTop="30dp"
    android:id="@+id/check_group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="horizontal"
    >

    <RadioButton
        android:id="@+id/rb_male"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="男"
      />

    <RadioButton
        android:id="@+id/rd_female"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="女"
    />
</RadioGroup>

    <Button
        android:id="@+id/btn_write"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="48dp"
        android:text="写入数据库"
        />
</LinearLayout>
read.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/tv_id"
            android:textAlignment="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="id"
            android:layout_weight="1"/>
        <TextView
            android:text="姓名"
            android:textAlignment="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <TextView
            android:textAlignment="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别"
            android:layout_weight="1"/>

    </LinearLayout>
    <ListView
        android:id="@+id/read_listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ListView>

</LinearLayout>


item_sql.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_id"
        android:textAlignment="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/tv_name"
        android:textAlignment="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/tv_sex"
        android:textAlignment="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
</LinearLayout>

    逻辑层:

        TestSQLite.java:

package com.maeeage.administrator.androidlearn;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.Button;

import com.maeeage.administrator.androidlearn.testSql.AtyRead;
import com.maeeage.administrator.androidlearn.testSql.AtyWrite;

/**
 * Created by Administrator on 2018/2/2/002.
 */

public class TestSQlite extends Activity {
    Button btn_w,btn_r;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testsqlite);
        findById();
        inti();

    }

    private void inti() {

        btn_w.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                write();
            }
        });

        btn_r.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                read();
            }
        });
    }

    private void findById() {
        btn_r=(Button)findViewById(R.id.btn_r);
        btn_w=(Button)findViewById(R.id.btn_w);
    }

    //bnt_w的onclick
    void write(){
        Intent intent=new Intent(TestSQlite.this, AtyWrite.class);
        startActivity(intent);
    }
    //btn_r的哦click
    void read(){
        Intent intent=new Intent(TestSQlite.this, AtyRead.class);
        startActivity(intent);
    }

}
        AtyWrite.java:

package com.maeeage.administrator.androidlearn.testSql;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.maeeage.administrator.androidlearn.R;

/**
 * Created by Administrator on 2018/2/2/002.
 */

public class AtyWrite extends Activity {
    EditText username;
    RadioButton male,female;
    Button btn_write;

    RadioGroup radioGroup;
    SQLiteDatabase db;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.write);
        findById();
        init();
    }

    private void init() {
        //每个程序都要自己数据库,默认情况下各自互不干扰
        //创建一个数据库,并且打开;
        //通过下面这个方法,创建,如果存在就打开,不存在就创建并打开
        db=  openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists tb_user(_id integer primary key autoincrement,name text not null,sex text not null)");
        btn_write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                toSql();
            }
        });
    }

    private void findById() {
        username=(EditText)findViewById(R.id.et_name);
        male=(RadioButton)findViewById(R.id.rb_male);
        female=(RadioButton)findViewById(R.id.rd_female);
        btn_write=(Button)findViewById(R.id.btn_write);
        radioGroup=(RadioGroup)findViewById(R.id.check_group);
    }

    //btn_write的onclick事件
   void  toSql(){

       String name=username.getText().toString();
       String sex;
       if(male.isChecked())
        sex="男";
       else
           sex="女";
       Toast.makeText(AtyWrite.this,name+"  "+sex,Toast.LENGTH_SHORT);
       String sql="insert into tb_user(name,sex) values('"+name+"','"+sex+"')";
       Toast.makeText(AtyWrite.this,name+"  "+sex,Toast.LENGTH_SHORT).show();
       db.execSQL(sql);

    }
}

AtyRead.java:

package com.maeeage.administrator.androidlearn.testSql;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import com.maeeage.administrator.androidlearn.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2018/2/2/002.
 */

public class AtyRead extends Activity {

    ListView listView;
    SimpleAdapter adapter;
    List<Map<String,String>> list;
    SQLiteDatabase db;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.read);
        inti();

    }

    private void inti() {

        //每个程序都要自己数据库,默认情况下各自互不干扰
        //创建一个数据库,并且打开;
        //通过下面这个方法,创建,如果存在就打开,不存在就创建并打开
        db=  openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        list=new ArrayList<Map<String, String>>();
        //初始化
        listView=(ListView)findViewById(R.id.read_listview);
        adapter=new SimpleAdapter(this,getData(),R.layout.item_sql,new String[]{"id","name","sex"},new int[]{R.id.tv_id,R.id.tv_name,R.id.tv_sex});
        listView.setAdapter(adapter);
    }

    public List<Map<String,String>> getData() {
        if (isTableExist("tb_user")) {
            Cursor c = db.rawQuery("select * from tb_user", null);
            if (c != null) {
                while (c.moveToNext()) {
                    Map<String, String> map = new HashMap<>();
                    map.put("id", c.getString(0));
                    map.put("name", c.getString(1));
                    map.put("sex", c.getString(c.getColumnIndex("sex")));
                    list.add(map);

                }
                c.close();
                db.close();
                return list;
            } else {
                c.close();
                db.close();
            }
        }
        return list;
    }
//判断table是否存在
    public boolean isTableExist(String table) {

        Cursor c = db.rawQuery("select count(*) from sqlite_master where type='table' and name='"+table+"'", null);
        if (c != null) {
            while (c.moveToNext()) {
                int count = c.getInt(0);
                if (count > 0) {
                    c.close();
                    return true;
                }
            }
        }else{
                c.close();
        }
        return false;
    }
}


总结:

SQLite的讲解,用真机运行程序,想查看数据库文件,这是教程







版权声明:

Android程序中读取使用已有的SQLite数据库

方法一: 先在 Manifest 里添加权限: 第一步先判断在指定的路劲是否存在,不存在就创建。第二步将android的资源下的数据库复制到指定路径下面。第三步就是根据指定路径打开或者创建...
  • chaoyu168
  • chaoyu168
  • 2015年12月15日 16:08
  • 9608

Android数据读取之Sqlite数据库操作

安卓开发只SQLite数据库操作实例
  • GISShiXiSheng
  • GISShiXiSheng
  • 2013年12月18日 11:22
  • 5079

解析xml文件,并把解析结果存储到android的SQLite数据库

以下面xml文件为例对其解析(假设此xml就在服务器端Server项目下的servlet包下的MenuServlet文件的输出流中): - - 1 1 水煮鱼 ...
  • Mary881225
  • Mary881225
  • 2012年03月15日 19:38
  • 6184

IOS开发四种常见存储 归档解归档(Archive)/偏好设置(NSUserDefaults)/沙盒存储 /SQLite3.0

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题。将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好。下面介绍一下数据保存的方式: 1.NSKe...
  • zhangmengleiblog
  • zhangmengleiblog
  • 2016年09月05日 10:07
  • 840

在一个fragment中给SQlite数据库insert数据,如何在另一个fragment中query到ListView并且即时刷新

执行insert和query方法就不多说了,主要是另一个fragment的即时更新 首先,我们需要知道一点:主fragment可以控制(不知道用控制妥不妥)子fragment的内容。 那么,我们需...
  • weiaitangyuxiaobao
  • weiaitangyuxiaobao
  • 2016年09月29日 19:56
  • 551

Android入门——数据存储之SQLite存储读取图片

SQLite保存图片并读取图片显示到View上。
  • CrazyMo_
  • CrazyMo_
  • 2017年01月11日 18:28
  • 3292

学习笔记:Android SQLite,并实现SQLite基本CRUD操作的Demo

一、背景       Android系统内置有SQLite,用户可以在本地存放大量较为复杂的关系型数据,相较于File操作和SharedPreferences只能存放简单的数据,SQLite具有更大的...
  • jinxin_cuit
  • jinxin_cuit
  • 2016年09月21日 15:35
  • 1031

Android 数据库SQLite Cursor数据遍历读取

Cursor是SQLite 数据库查询返回的行数集合,Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等。以下是Cursor遍历的方...
  • Buaaroid
  • Buaaroid
  • 2015年07月13日 17:20
  • 10155

Android数据库操作的简单封装

为什么要用ORM 在开发android的过程中,我们基本上都会用到sqlite数据库,一般省事的情况下都是使用网上的一些orm框架操作sqlite数据库,比较有名的ORMLite、GreenDao和...
  • caicdd007
  • caicdd007
  • 2016年06月29日 21:14
  • 2728

qt下使用sqlite数据库存储二进制文件

qt下sqlite数据库存储和查询二进制数据
  • ypchen001
  • ypchen001
  • 2016年05月21日 14:53
  • 1622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中SQLite的使用(简单数据存入与读取)
举报原因:
原因补充:

(最多只允许输入30个字)