Android学习(24)SQLite_数据库的使用

Android学习(24)SQLite_数据库的使用

SQLite数据库介绍:

  • 轻量级:SQLite是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且动态库的尺寸也相当小。
  • 独立性:SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”,所以在使用的时候能够省去不少麻烦
  • 隔离性:SQLite数据库中所有的信息都包含在一个文件内,方便管理和维护
  • 跨平台:SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统外,很多手机操作系统同样可以运行。
  • 多语言接口:SQLite数据库支持很多语言编程接口,比如C\C++,JAVA,Python等。
  • 安全性:SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。
1.新建一个MySql.java类,继承SQLiteOpenHelper

MySql.java

public class MySql extends SQLiteOpenHelper {

    //表名
    public static final String TABLE_NAME = "user";
    //ID,固定的格式
    public static final String _ID= "_id";
    //姓名
    public static final String NAME = "name";
    //性别
    public static final String SEX = "sex";

    //构造函数
    public MySql(Context context) {
        super(context,"database",null,1 );
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表
        db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
                _ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                NAME + " TEXT NOT NULL,"+
                SEX + " TEXT NOT NULL) ");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
2.在xml文件中添加和显示数据

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <EditText
        android:id="@+id/etName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/etSex"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btnOk"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交"/>
    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ListView>
</LinearLayout>
3.设置ListView的布局

call.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"
    android:orientation="vertical">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NAME"/>
    <TextView
        android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SEX"/>
</LinearLayout>
4.在MainAcitivity.java中使用数据库

MainAcitivity.java

public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener,View.OnClickListener{

    private EditText name,sex;
    private Button btn;
    //实例化MySql
    private MySql mySql;
    //通过SQLiteDatabase来读取和写入数据
    private SQLiteDatabase dbRead,dbWrite;
    //数据库适配器
    private SimpleCursorAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = (Button)findViewById(R.id.btnOk);
        name = (EditText)findViewById(R.id.etName);
        sex = (EditText)findViewById(R.id.etSex);

        mySql = new MySql(this);
        //按钮点击监听
        btn.setOnClickListener(this);
        //实现数据库的读写
        dbRead = mySql.getReadableDatabase();
        dbWrite = mySql.getWritableDatabase();
        //适配器加载视图
        adapter = new SimpleCursorAdapter(this,R.layout.call,null,
                new String[]{MySql.NAME,MySql.SEX},new int[] {R.id.name,R.id.sex});
        //绑定适配器
        setListAdapter(adapter);
        //长按监听
        getListView().setOnItemLongClickListener(this);

        //添加数据
        /*ContentValues cv = new ContentValues();
        cv.put("name", "张三");
        cv.put("sex", "男");
        dbWrite.insert(MySql.TABLE_NAME,null,cv);*/
        select();
    }

    //查询数据库方法
    public void select() {
        //读取数据
        Cursor cursor = dbRead.query(MySql.TABLE_NAME,null,null,null,null,null,null);     
        //刷新UI
        adapter.changeCursor(cursor);
    }
    //点击添加方法
    @Override
    public void onClick(View v) {
        ContentValues cv = new ContentValues();
        cv.put(MySql.NAME, name.getText().toString());
        cv.put(MySql.SEX, sex.getText().toString());
        //添加到数据库中
        dbWrite.insert(MySql.TABLE_NAME, null,cv);
        //查询数据
        select();
    }

    //长按删除
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        //获取当前点击的视图
        TextView tv = (TextView)view.findViewById(R.id.name);
        //接受当前点击的视图的内容
        String name = tv.getText().toString().trim();
        System.out.print(name);
        //从数据库中删除数据
        dbWrite.execSQL("delete from user where name = ?",new String[] {name});
        select();
        return true;
    }
}


这里写图片描述


声明:
1.知识点来源于《网易云课堂》——《Android基础视频教程》
2.本文只用于本人自身学习记录,如有侵权,请立即通知本人更改或删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你这个橘子不要皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值