iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Android项目中如何在一个数据库里建立多张表
  • 791
分享到

Android项目中如何在一个数据库里建立多张表

2024-04-02 19:04:59 791人浏览 薄情痞子
摘要

Android项目中如何在一个数据库里建立多张表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,创建一个公共的DBAdapt

Android项目中如何在一个数据库里建立多张表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一,创建一个公共的DBAdapter;

为了在整个程序运行期间调用该公共的数据库,我们定义了一个扩展自Application的CommDB类:

1,创建唯一的数据库:


 1 public class CommDB { 2  3     public static final String DATABASE_NAME = "myDatabase"; //数据库名称 4  5     public static final int DATABASE_VERSION = 1; 6     //创建该数据库下学生表的语句 7     private static final String CREATE_TABLE_Students = 8         "CREATE TABLE if not exists " + StudentDB.sqlITE_TABLE + " (" + 9       StudentDB.KEY_ROWID + " integer PRIMARY KEY autoincrement," +10       StudentDB.KEY_AGE + "," +11       StudentDB.KEY_GENDER + "," +12       StudentDB.KEY_NAME + "," +13         " UNIQUE (" + StudentDB.KEY_NAME +"));";//暂时规定不能重名14   //创建该数据库下教师表的语句15     private static final String CREATE_TABLE_Teachers =16           "CREATE TABLE if not exists " + TeacherDB.SQLITE_TABLE + " (" +17                   TeacherDB.KEY_ROWID + " integer PRIMARY KEY autoincrement," +18                   TeacherDB.KEY_AGE + "," +19                   TeacherDB.KEY_GENDER + "," +20                   TeacherDB.KEY_NAME + "," +21           " UNIQUE (" + TeacherDB.KEY_AGE +"));";22     private final Context context; 
23     private DatabaseHelper DBHelper;24     private SQLiteDatabase db;25     29     public CommDB(Context ctx)30     {31         this.context = ctx;32         this.DBHelper = new DatabaseHelper(this.context);33     }34 35     private static class DatabaseHelper extends SQLiteOpenHelper 
36     {37         DatabaseHelper(Context context) 
38         {39             super(context, DATABASE_NAME, null, DATABASE_VERSION);40         }41 42         @Override43         public void onCreate(SQLiteDatabase db) 
44         {45             db.execSQL(CREATE_TABLE_Students);//创建学生表46             db.execSQL(CREATE_TABLE_Teachers);//创建教师表 47         }48 49         @Override50         public void onUpgrade(SQLiteDatabase db, int oldVersion, 
51         int newVersion) 
52         {               
53             // Adding any table mods to this guy here54         }55     } 
56 57    63     public CommDB open() throws SQLException 
64     {65         this.db = this.DBHelper.getWritableDatabase();66         return this;67     }68 69     73     public void close() 
74     {75         this.DBHelper.close();76     }77 }


2,在app开始运行时,创建上述的数据库,并创建对应的数据表:


 1 public class GApplication extends Application { 2     private CommDB comDBHelper; 3  4     @Override 5     public void onCreate() { 6         // TODO Auto-generated method stub 7         super.onCreate(); 8         comDBHelper = new CommDB(this); 9         comDBHelper.open();10     }11     12 }


二,分别创建对应的数据表;

1,建立学生数据表类:


public class StudentDB {public static final String KEY_ROWID = "_id";public static final String KEY_AGE = "age";public static final String KEY_GENDER = "gender";public static final String KEY_NAME = "name";private static final String TAG = "StudentDbAdapter";private DatabaseHelper mDbHelper;private SQLiteDatabase mDb;    // private static final String DATABASE_NAME = "Fortrun_Ticket11";static final String SQLITE_TABLE = "StudentTable";private final Context mCtx;private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {super(context, CommDB.DATABASE_NAME, null, CommDB.DATABASE_VERSION);
        }

        @Overridepublic void onCreate(SQLiteDatabase db) {
            
        }

        @Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS " + SQLITE_TABLE);
            onCreate(db);
        }
    }public StudentDB(Context ctx) {this.mCtx = ctx;
    }public StudentDB open() throws SQLException {

        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();return this;
    }public void close() {if (mDbHelper != null) {
            mDbHelper.close();
        }
    }public long createStudent(String age, String gender, String name) {long createResult = 0;
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_AGE, age);
        initialValues.put(KEY_GENDER, gender);
        initialValues.put(KEY_NAME, name);try {
            createResult = mDb.insert(SQLITE_TABLE, null, initialValues);
        } catch (Exception e) {// TODO: handle exception        }return createResult;
    }public boolean deleteAllStudents() {int doneDelete = 0;try {
            doneDelete = mDb.delete(SQLITE_TABLE, null, null);
            Log.w(TAG, Integer.toString(doneDelete));
            Log.e("doneDelete", doneDelete + "");
        } catch (Exception e) {// TODO: handle exception            e.printStackTrace();
        }return doneDelete > 0;
    }public boolean deleteTicketByName(String name) {int isDelete;
        String[] tName;
        tName = new String[] { name };
        isDelete = mDb.delete(SQLITE_TABLE, KEY_AGE + "=?", tName);
        Log.e("deleteTicket", "isDelete:" + isDelete + "||" + "ticketID="
                + name);return isDelete > 0;
    }public void insertSomeTickets() {
        
    }public ArrayList<Student> fetchAll() {

        ArrayList<Student> allTicketsList = new ArrayList<Student>();
        Cursor mCursor = null;
        mCursor = mDb.query(SQLITE_TABLE, new String[] { KEY_ROWID, KEY_AGE,
                KEY_GENDER, KEY_NAME }, null, null, null, null, null);if (mCursor.moveToFirst()) {do {
                Student st = new Student();
                st.setAge(mCursor.getString(mCursor
                        .getColumnIndexOrThrow(KEY_AGE)));
                st.setGender(mCursor.getString(mCursor
                        .getColumnIndexOrThrow(KEY_GENDER)));
                st.setName(mCursor.getString(mCursor
                        .getColumnIndexOrThrow(KEY_NAME)));
                allTicketsList.add(st);
            } while (mCursor.moveToNext());
        }if (mCursor != null && !mCursor.isClosed()) {
            mCursor.close();
        }return allTicketsList;
    }

}


2,创建教师数据表类:


public class TeacherDB {public static final String KEY_ROWID = "_id";public static final String KEY_AGE = "age";public static final String KEY_GENDER = "gender";// 还要保留public static final String KEY_NAME = "name";private static final String TAG = "TeacherDbAdapter";private DatabaseHelper mDbHelper;private SQLiteDatabase mDb;// private static final String DATABASE_NAME = "Fortrun_Ticket11";static final String SQLITE_TABLE = "TeacherTable";private static final int DATABASE_VERSION = 1;private final Context mCtx;private static class DatabaseHelper extends SQLiteOpenHelper {

        DatabaseHelper(Context context) {super(context, CommDB.DATABASE_NAME, null, CommDB.DATABASE_VERSION);
        }

        @Overridepublic void onCreate(SQLiteDatabase db) {// Log.w(TAG, DATABASE_CREATE);// db.execSQL(DATABASE_CREATE);        }

        @Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS " + SQLITE_TABLE);
            onCreate(db);
        }
    }public TeacherDB(Context ctx) {this.mCtx = ctx;
    }public TeacherDB open() throws SQLException {

        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();return this;
    }public void close() {if (mDbHelper != null) {
            mDbHelper.close();
        }
    }public long createTeacher(String age, String gender, String name) {long createResult = 0;
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_AGE, age);
        initialValues.put(KEY_GENDER, gender);
        initialValues.put(KEY_NAME, name);try {
            createResult = mDb.insert(SQLITE_TABLE, null, initialValues);
        } catch (Exception e) {// TODO: handle exception        }return createResult;
    }public boolean deleteAllTeachers() {int doneDelete = 0;try {
            doneDelete = mDb.delete(SQLITE_TABLE, null, null);
            Log.w(TAG, Integer.toString(doneDelete));
            Log.e("doneDelete", doneDelete + "");
        } catch (Exception e) {// TODO: handle exception            e.printStackTrace();
        }return doneDelete > 0;
    }public boolean deleteTeacherByName(String name) {int isDelete;
        String[] tName;
        tName = new String[] { name };
        isDelete = mDb.delete(SQLITE_TABLE, KEY_AGE + "=?", tName);
        Log.e("deleteTicket", "isDelete:" + isDelete + "||" + "ticketID="
                + name);return isDelete > 0;
    }public void insertSomeTickets() {
        
    }// 扫描时进行判断本地数据库是否有此ticketIDpublic ArrayList<Teacher> fetchAll() {

        ArrayList<Teacher> allTeacherList = new ArrayList<Teacher>();
        Cursor mCursor = null;
        mCursor = mDb.query(SQLITE_TABLE, new String[] { KEY_ROWID, KEY_AGE,
                KEY_GENDER, KEY_NAME }, null, null, null, null, null);if (mCursor.moveToFirst()) {do {
                Teacher st = new Teacher();
                st.setAge(mCursor.getString(mCursor
                        .getColumnIndexOrThrow(KEY_AGE)));
                st.setGender(mCursor.getString(mCursor
                        .getColumnIndexOrThrow(KEY_GENDER)));
                st.setName(mCursor.getString(mCursor
                        .getColumnIndexOrThrow(KEY_NAME)));
                allTeacherList.add(st);
            } while (mCursor.moveToNext());
        }if (mCursor != null && !mCursor.isClosed()) {
            mCursor.close();
        }return allTeacherList;
    }

}


三,调用public class ShowActivity extends Activity
{

private StudentDB studentDB;private TeacherDB teacherDB;private List<Student> stList = new ArrayList<Student>();private List<Teacher> trList = new ArrayList<Teacher>();
    

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        studentDB = new StudentDB(this);
        studentDB.open();
        
        teacherDB = new TeacherDB(this);
        teacherDB.open();
        
        studentDB.createStudent("28", "男", "阿武");
        studentDB.createStudent("24", "女", "小铃");
        
        teacherDB.createTeacher("40", "男", "何SIR");
        teacherDB.createTeacher("45", "女", "MRS谢");
        stList = studentDB.fetchAll();
        trList = teacherDB.fetchAll();for (int i = 0; i < stList.size(); i++) {
            Log.e("stList value", stList.get(i).getName());
        }for (int i = 0; i < trList.size(); i++) {
            Log.e("trList value", trList.get(i).getName());
        }
    }
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();if (studentDB != null) {            studentDB.close();        }if (teacherDB != null) {            teacherDB.close();        }    }    @Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.show, menu);return true;    } }


四,结果验证;

10-25 16:50:10.321: E/stList value(3953): 阿武

10-25 16:50:10.321: E/stList value(3953): 小铃

10-25 16:50:10.321: E/trList value(3953): 何SIR

10-25 16:50:10.321: E/trList value(3953): MRS谢

五,注意事项:

此例子中插入数据库的数据是以年龄作为唯一字段,当插入的数据中,年龄字段有重复时,数据库会报错,此例子只为说明如何在一个数据库中建立多张表,因此,在实际项目中,一般以某个实体的ID作为唯一字段,且插入前必须经过判断;

另外,数据库的关闭,我们选择在onDestroy()方法中调用。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网数据库频道,感谢您对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: Android项目中如何在一个数据库里建立多张表

本文链接: https://www.lsjlt.com/news/61743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android项目中如何在一个数据库里建立多张表
    Android项目中如何在一个数据库里建立多张表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,创建一个公共的DBAdapt...
    99+
    2024-04-02
  • 怎么在mysql数据库中创建一张表
    这篇文章主要介绍怎么在mysql数据库中创建一张表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体方法:首先打开MYSQL,创建一个数据库。利用create database +(数据库名称)语句,来出创建数据库。...
    99+
    2023-06-14
  • 如何在Android项目中创建一个选项菜单
    这期内容当中小编将会给大家带来有关如何在Android项目中创建一个选项菜单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用OptionMenu只要重写两个方法public boolean onCrea...
    99+
    2023-05-31
    android roi 目中
  • 如何Android项目中创建一个View
    这篇文章将为大家详细讲解有关如何Android项目中创建一个View,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。从布局文件到LayoutParams首先从Activity的setConte...
    99+
    2023-05-31
    android view roi
  • 数据库中如何一条语句删除多张表
    这篇文章主要介绍数据库中如何一条语句删除多张表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 第一种方法:SCOTT@PR...
    99+
    2024-04-02
  • 如何查寻数据库中多张表的总数
    ...
    99+
    2024-04-02
  • 如何在Android项目中创建一个自定义控件
    本篇文章为大家展示了如何在Android项目中创建一个自定义控件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。仿iPhone 的风格,在界面的顶部放置一个标题栏。<&#63;xml v...
    99+
    2023-05-31
    android roi 目中
  • Android项目中如何导入数据库
    Android项目中如何导入数据库?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。方法如下我们都知道 Android的 数据库默认是放在data\data\pac...
    99+
    2023-05-31
    android roi 目中
  • 如何在Java项目中模拟一个数据库连接池
    本文章向大家介绍如何在Java项目中模拟一个数据库连接池,主要包括如何在Java项目中模拟一个数据库连接池的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪...
    99+
    2023-06-06
  • 在navicat中如何新建一个数据表
    这篇文章主要介绍在navicat中如何新建一个数据表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先打开navicat,打开一个数据库连接。然后找到一个数据库。点击数据库名,然后点...
    99+
    2024-04-02
  • SpringBoot项目中如何同时操作多个数据库
    本篇内容主要讲解“SpringBoot项目中如何同时操作多个数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot项目中如何同时操作多个数据库”吧!在实际项目开发中可能存在需要...
    99+
    2023-06-29
  • 如何在pycharm中创建一个新项目
    如何在pycharm中创建一个新项目?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。操作环境:windows7系统、PyCharm 4.0.3版,DELL G3电脑。pychar...
    99+
    2023-06-07
  • 如何在pycharm中新建一个Django项目
    本篇文章为大家展示了如何在pycharm中新建一个Django项目,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、创建项目之前我们先安装Django,安装命令行pip install&n...
    99+
    2023-06-14
  • 如何在阿里云数据库中建立文件夹
    阿里云数据库是一款强大的数据库管理工具,它为用户提供了一种安全、高效的方式来管理和存储数据。本文将详细介绍如何在阿里云数据库中建立文件夹,帮助用户更好地组织和管理数据。 一、准备工作在开始建立文件夹之前,需要确保您已经有一个阿里云数据库账户...
    99+
    2023-10-30
    阿里 数据库中 文件夹
  • 如何在Android项目中解析 json数据
    今天就跟大家聊聊有关如何在Android项目中解析 json数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 Android json数据解析详解移动开发经常要与服务器数...
    99+
    2023-05-31
    android json roi
  • 如何在eclipse中创建一个spring boot项目
    这期内容当中小编将会给大家带来有关如何在eclipse中创建一个spring boot项目,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。spring Boot是由Pivotal团队提供的全新框架,其设计目...
    99+
    2023-05-31
    eclipse springboot spring boo
  • 如何在数据库中创建数据表
    在数据库中创建数据表通常需要执行以下步骤: 登录到数据库管理系统,例如MySQL、Oracle、SQL Server等。 选...
    99+
    2024-04-09
    数据库
  • 如何在数据库中创建表
    如何在数据库中创建数据表?这里以Mysql为例: 首先打开Mysql客户端. 方式一:通过SQL语句创建。 如创建一个学生表,包含学生编号、学生姓名、年龄、性别四个字段。 输入下面的SQL,然后点击运行,即可创建学生表。 create t...
    99+
    2023-08-31
    数据库 mysql
  • 在数据库中如何实现建立索引
    本篇内容介绍了“在数据库中如何实现建立索引”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!建立索引常用的规则...
    99+
    2024-04-02
  • 在Java项目中如何实现一个可变参数列表
    这篇文章给大家介绍在Java项目中如何实现一个可变参数列表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可变参数列表详解1、接受的传入参数情况:如public void test(String ...args)...
    99+
    2023-05-31
    jav 可变参数 列表
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作