Android sql的数据存储

本文介绍了一个使用SQLite进行数据增删改查操作的具体实例。通过一个简单的应用界面,用户可以输入姓名、密码和年龄等信息,并执行新增、查询、删除及修改操作。文中详细展示了XML布局文件、实体类定义以及具体的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现效果:输入姓名,密码,年龄。点击增加,查询,显示到下拉列表中。

                   点击删除,此行信息消失。点击修改,修改内容直接进入下拉列表中。

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.jreduch09.sqlitedemo.SqlLiteTestActivity">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:hint="请输入姓名"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pwd"
        android:hint="请输入密码"
        android:layout_below="@+id/name"
        android:inputType="textPassword"
        android:layout_alignParentStart="true" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/age"
        android:hint="请输入年龄"
        android:layout_below="@+id/pwd"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="新增"
        android:id="@+id/insert"
        android:layout_below="@+id/age"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询"
        android:id="@+id/search"
        android:layout_alignTop="@+id/insert"
        android:layout_toEndOf="@+id/insert" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"
        android:id="@+id/delete"
        android:layout_below="@+id/age"
        android:layout_toEndOf="@+id/search" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改"
        android:id="@+id/update"
        android:layout_below="@+id/age"
        android:layout_toEndOf="@+id/delete" />

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/sp"
        android:layout_below="@+id/insert">
    </Spinner>
</RelativeLayout>

布局效果:


第一个实体类:MyDpHelper

package com.example.administrator.jreduch09.sqlitedemo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Administrator on 2016/8/22.
 */
public class MyDbHelper extends SQLiteOpenHelper{
    
    private final String TABLENAME = "info";
    private final String INFO_COLUM_ID = "_id";
    private final String INFO_COLUM_NAME = "name";
    private final String INFO_COLUM_PWD = "pwd";
    private final String INFO_COLUM_AGE = "age";
    private final String INFO_COLUM_IMG = "img";

    public MyDbHelper(Context context){
        super(context,"user.db",null,1);
        //版本号必须大于0
    }

    public MyDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
         public void onCreate(SQLiteDatabase db) {
        StringBuilder sql=new StringBuilder();
        sql.append(" Create table if not exists ");
        sql.append(TABLENAME+"(");
        sql.append(INFO_COLUM_ID+" integer primary key autoincrement,");
        sql.append(INFO_COLUM_NAME+" varchar(10),");
        sql.append(INFO_COLUM_PWD +" varchar(10),");
        sql.append(INFO_COLUM_AGE +" varchar(10),");
        sql.append(INFO_COLUM_IMG +" varchar(10)");
        sql.append(")");
        db.execSQL(sql.toString());
        //执行语句
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = " drop table if exists "+TABLENAME;
        db.execSQL(sql);
        onCreate(db);
    }
}

第二个实体类:User

package com.example.administrator.jreduch09.sqlitedemo.entity;

/**
 * Created by Administrator on 2016/8/22.
 */
public class User {
    private  int userId;
    private  String name;
    private  String pwd;
    private  String age;
    private  String img;

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", age='" + age + '\'' +
                ", img='" + img + '\'' +
                '}';
    }
}

第三个实体类:UserdDao

package com.example.administrator.jreduch09.sqlitedemo.entity;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.administrator.jreduch09.sqlitedemo.MyDbHelper;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/8/22.
 */
public class UserdDao {
    private MyDbHelper myDbHelper;

    public UserdDao(Context context){
        myDbHelper =new MyDbHelper(context);
    }
    //插入数据
    public  void  insert(User user){
        SQLiteDatabase db= myDbHelper.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put("name",user.getName());
        cv.put("pwd",user.getPwd());
        cv.put("age",user.getAge());
        cv.put("img", user.getImg());
        db.insert("info", null, cv);
        db.close();
    }
    //查询一条数据
    public User searchUser(String id){

        SQLiteDatabase db=myDbHelper.getReadableDatabase();
        Cursor cs=db.query("info", null, " _id=? ", new String[]{id}, null, null, null);
        User user=null;
        if(cs.moveToNext()){
            user=new User();
            user.setUserId(cs.getInt(cs.getColumnIndex("_id")));
            user.setName(cs.getString(cs.getColumnIndex("name")));
            user.setPwd(cs.getString(cs.getColumnIndex("pwd")));
            user.setAge(cs.getString(cs.getColumnIndex("age")));
            user.setImg(cs.getString(cs.getColumnIndex("img")));
        }
        return user;
    }
    //查询所有数据
    public List search(){
        SQLiteDatabase db=myDbHelper.getReadableDatabase();
        Cursor cs = db.query("info", null, null, null, null, null, null);
        User user=null;
        List<User> list=new ArrayList<>();
        while (cs.moveToNext()){
            user=new User();
            user.setUserId(cs.getInt(cs.getColumnIndex("_id")));
            user.setName(cs.getString(cs.getColumnIndex("name")));
            user.setPwd(cs.getString(cs.getColumnIndex("pwd")));
            user.setAge(cs.getString(cs.getColumnIndex("age")));
            user.setImg(cs.getString(cs.getColumnIndex("img")));
            list.add(user);
        }
        cs.close();
        db.close();
        return list;
    }
    //删除所有数据
     public void delete(){
         SQLiteDatabase db=myDbHelper.getReadableDatabase();
         db.delete("info", null, null);
         db.close();
     }
    //删除一条数据
    public  void deleteUser(String id){
        SQLiteDatabase db=myDbHelper.getReadableDatabase();
        db.delete("info"," _id=? ",new String[]{id});
        db.close();
    }
    //修改数据
    public void update(User user){
        SQLiteDatabase db=myDbHelper.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put("name",user.getName());
        cv.put("pwd",user.getPwd());
        cv.put("age",user.getAge());
        cv.put("img", user.getImg());
        String id=String.valueOf(user.getUserId());
        db.update("info",cv,"_id=? ",new String[]{id});
        db.close();
    }
}


代码:

package com.example.administrator.jreduch09.sqlitedemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import com.example.administrator.jreduch09.R;
import com.example.administrator.jreduch09.sqlitedemo.entity.User;
import com.example.administrator.jreduch09.sqlitedemo.entity.UserdDao;

import java.util.ArrayList;
import java.util.List;

public class SqlLiteTestActivity extends AppCompatActivity {
    private EditText name,age,pwd;
    private Button insert,search,delete,update;
    private UserdDao userDao;
    private Spinner sp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sql_lite_test);
        name= (EditText) findViewById(R.id.name);
        age= (EditText) findViewById(R.id.age);
        pwd= (EditText) findViewById(R.id.pwd);
        insert= (Button) findViewById(R.id.insert);
        search= (Button) findViewById(R.id.search);
        delete = (Button) findViewById(R.id.delete);
        update= (Button) findViewById(R.id.update);
        sp= (Spinner) findViewById(R.id.sp);
        userDao=new UserdDao(this);
        insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                User user=new User();
                user.setName(name.getText().toString());
                user.setAge(age.getText().toString());
                user.setPwd(pwd.getText().toString());
                userDao.insert(user);
                Toast.makeText(getBaseContext(),"新增成功",Toast.LENGTH_SHORT).show();
            }
        });
        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //下拉列表
                List<User> list=userDao.search();
                List myData=new ArrayList();
                for(User u:list){
                    myData.add(u.getUserId()+":"+u.getName());
                }
                ArrayAdapter aa=new ArrayAdapter(getBaseContext(),
                        android.R.layout.simple_list_item_1,myData);
                sp.setAdapter(aa);
            }
        });
        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //将下拉列表的一条数据显示到EditText中
                String str = (String) sp.getSelectedItem();
                if (!str.equals("")) {
                    String id1 = str.split(":")[0];
                    User user = userDao.searchUser(id1);
                    name.setText(user.getName().toString());
                    age.setText(user.getAge().toString());
                    pwd.setText(user.getPwd().toString());
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = sp.getSelectedItem().toString();
                if (!str.equals("")) {
                    String id = str.split(":")[0];
                    userDao.deleteUser(id);
                }
            }
        });
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str=sp.getSelectedItem().toString();
                if(!str.equals("")){
                    String id=str.split(":")[0];
                    User user=userDao.searchUser(id);
                    user.setName(name.getText().toString());
                    user.setPwd(pwd.getText().toString());
                    user.setAge(age.getText().toString());
                    userDao.update(user);
                }
            }
        });
    }
}

效果展示:


图为删除了3.6.7.8修改了9的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值