代码改变世界

android中sqlite数据库的基本使用和添加多张表

2019-06-07 18:53  dogdogwang  阅读(2182)  评论(2编辑  收藏  举报

看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大家如何在sqlite数据库中建立多张表。

首先是如何建立数据库和表:

建立一个类继承SQLiteOpenHelper,即:

public class ReaderOpenHelper extends SQLiteOpenHelper

然后添加构造方法:

public ReaderOpenHelper(Context context) {
        
        super(context, "people.db", null, 1);
        
    }

people.db是数据库名字,1是数据库版本。

然后在该类实现以下两个方法:

复制代码
@Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
     db.execSQL("create table readers(renumber integer primary key,rename text,retype text,reage text,rephone text,usename integer,password integer,createtime text)");
     db.execSQL("create table books(booknumber integer primary key,bookname text,booktype text,bookeditor text,intime text,incounts integer)");
    }
复制代码

db.execSQL的作用是执行SQL语句,create table readers是创建一个叫readers的表,括号里就是各个字段名和值类型。

这里创建了两张表。另一张叫books

继续实现:

复制代码
@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("drop if table exists readers");
        db.execSQL("drop if table exists  books");
        onCreate(db);
    }
复制代码

执行Sql语句"drop if table exists 表名"

这样你的sqlite数据库和两张表就创建完成了。

接下来再建一个数据库manager类,如:

public class ReaderManager 

添加一个构造方法

public ReaderManager(Context conetxt) {
        this.context = context;
        readerOpenHelper = new ReaderOpenHelper(conetxt);
    }

然后添加表的操作方法:

复制代码
package com.zhou.db;

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

import com.zhou.utils.Books;
import com.zhou.utils.Reader;

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

public class ReaderManager {
    ReaderOpenHelper readerOpenHelper;
    Context context;

    public ReaderManager(Context conetxt) {
        this.context = context;
        readerOpenHelper = new ReaderOpenHelper(conetxt);
    }

    // 增加读者
    public void addSQL(Reader reader) {
        SQLiteDatabase db = null;
        try {
            db = readerOpenHelper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("renumber", reader.getReNumber());
            values.put("rename", reader.getName());
            values.put("retype", reader.getSex());
            values.put("reage", reader.getAge());
            values.put("rephone", reader.getPhoneNumber());
            values.put("createtime", reader.getCreateTime());
            values.put("usename", reader.getUseName());
            values.put("password", reader.getPassword());
            db.insert("readers", null, values);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            db.close();
        }
    }

    // 增加图书
    public void bookAddSQL(Books book) {
        SQLiteDatabase db = null;
        try {
            db = readerOpenHelper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("booknumber", book.getBookNumber());
            values.put("bookname", book.getBookName());
            values.put("booktype", book.getBookType());
            values.put("bookeditor", book.getBookEditer());
            values.put("intime", book.getInTime());
            values.put("incounts", book.getCount());
            db.insert("books", null, values);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            db.close();
        }
    }

    // 读者查询
    public List<Reader> selectSQL() {
        List<Reader> list = new ArrayList<Reader>();
        SQLiteDatabase db = null;
        // 获取一个光标对象
        Cursor cursor = null;
        try {
            db = readerOpenHelper.getReadableDatabase();
            cursor = db.query("readers", null, null, null, null, null, null);
            Reader reader = null;
            while (cursor.moveToNext()) {
                reader = new Reader();
                reader.setReNumber(cursor.getInt(cursor
                        .getColumnIndex("renumber")));

                reader.setName(cursor.getString(cursor.getColumnIndex("rename")));
                reader.setSex(cursor.getString(cursor.getColumnIndex("retype")));
                reader.setAge(cursor.getString(cursor.getColumnIndex("reage")));
                reader.setPhoneNumber(cursor.getString(cursor
                        .getColumnIndex("rephone")));
                reader.setCreateTime(cursor.getString(cursor
                        .getColumnIndex("createtime")));
                reader.setUseName(cursor.getInt(cursor
                        .getColumnIndex("usename")));
                reader.setPassword(cursor.getInt(cursor
                        .getColumnIndex("password")));
                list.add(reader);
            }
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            cursor.close();
            db.close();
        }

        return list;
    }

    // 图书查询
    public List<Books> bookSelectSQL() {
        List<Books> list = new ArrayList<Books>();
        SQLiteDatabase db = null;
        // 获取一个光标对象
        Cursor cursor = null;
        try {
            db = readerOpenHelper.getReadableDatabase();
            cursor = db.query("books", null, null, null, null, null, null);
            Books book = null;
            while (cursor.moveToNext()) {
                book = new Books();
                book.setBookNumber(cursor.getInt(cursor
                        .getColumnIndex("booknumber")));
                book.setBookName(cursor.getString(cursor
                        .getColumnIndex("bookname")));
                book.setBookType(cursor.getString(cursor
                        .getColumnIndex("booktype")));
                book.setBookEditer(cursor.getString(cursor
                        .getColumnIndex("bookeditor")));
                book.setInTime(cursor.getString(cursor.getColumnIndex("intime")));
                book.setCount(cursor.getInt(cursor.getColumnIndex("incounts")));
                Log.d("TAGG", cursor.getString(cursor.getColumnIndex("intime")));
                list.add(book);
            }
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            cursor.close();
            db.close();
        }

        return list;
    }

    // 读者删除
    public void deleteSQL(final long id) {
        SQLiteDatabase db = null;
        try {
            db = readerOpenHelper.getWritableDatabase();
            db.delete("readers", "renumber=" + id, null);
        } catch (Exception e) {

        } finally {
            db.close();
        }
    }

    // 读者更新

    public void updateData(int id, String name, String sex, String age,
            String phoneNumber, int password) {

        SQLiteDatabase db = null;
        try {
            db = readerOpenHelper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("rename", name);
            values.put("retype", sex);
            values.put("reage", age);
            values.put("rephone", phoneNumber);
            values.put("password", password);
            db.update("readers", values, "renumber=" + id, null);
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            db.close();
        }

    }

    // public long getCount() {
    //
    // Cursor cursor = null;
    // long count = 0;
    // SQLiteDatabase db = null;
    // try {
    // db = readerOpenHelper.getWritableDatabase();
    // cursor = db.query("readers", null, null, null, null, null, null);
    //
    // if (null != cursor) {
    // count = cursor.getCount();
    // cursor.close();
    // }
    // } catch (Exception e) {
    // } finally {
    // db.close();
    // }
    // return count;
    // }

}