如何在android中创建数据库?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2729438/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 07:07:28  来源:igfitidea点击:

How do I create a database in android?

androiddatabasesqlite

提问by prakrati

I need a step by step procedure for creating a database in Android.

我需要一个在 Android 中创建数据库的分步过程。

回答by AlphaMale

Database is important thing in programming. Many of our codes always use data to be processed and saved. Just like any other programming environment, Android supports database programming too. You can use the default database supported by android, SQLiteDatabase.

数据库在编程中很重要。我们的许多代码总是使用要处理和保存的数据。就像任何其他编程环境一样,Android 也支持数据库编程。可以使用android支持的默认数据库,SQLiteDatabase.

Database in SQLiteDatabase can contain more than one table.Assume that we have one database PERSONALDBand one table BIODATA. The structure of BIODATAis:

SQLiteDatabase 中的数据库可以包含多个PERSONALDBBIODATA。假设我们有一个数据库和一个表。的结构BIODATA是:

_id integer
code string
name string
gender string

_id is for key increment,

code, name, and genderis for description of person.

code, name, 和gender用于描述person

When program is called for the first time, we have to make sure that the database and the table is opened, if it exists.If not, then we have to create a database and a table. As an example from Android notepad sample, here is the class PersonDbHelperfor manipulating table Biodata.

第一次调用程序时,我们必须确保数据库和表是打开的,如果存在。如果不存在,那么我们必须创建一个数据库和一个表。作为一个例子Android notepad sample,这里是PersonDbHelper操作表的类Biodata

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

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

public class PersonDbHelper {
    class Row extends Object {
        public long _Id;
        public String code;
        public String name;
        public String gender;
    }

    private static final String DATABASE_CREATE =
        "create table BIODATA(_id integer primary key autoincrement, "
            + "code text not null,"
            + "name text not null"
            +");";

    private static final String DATABASE_NAME = "PERSONALDB";

    private static final String DATABASE_TABLE = "BIODATA";

    private static final int DATABASE_VERSION = 1;

    private SQLiteDatabase db;

    public PersonDbHelper(Context ctx) {
        try {
            db = ctx.openDatabase(DATABASE_NAME, null);
        } catch (FileNotFoundException e) {
            try {
                db =
                    ctx.createDatabase(DATABASE_NAME, DATABASE_VERSION, 0,
                        null);
                db.execSQL(DATABASE_CREATE);
            } catch (FileNotFoundException e1) {
                db = null;
            }
        }
    }

    public void close() {
        db.close();
    }

    public void createRow(String code, String name) {
        ContentValues initialValues = new ContentValues();
        initialValues.put("code", code);
        initialValues.put("name", name);
        db.insert(DATABASE_TABLE, null, initialValues);
    }

    public void deleteRow(long rowId) {
        db.delete(DATABASE_TABLE, "_id=" + rowId, null);
    }

    public List<Row> fetchAllRows() {
        ArrayList<Row> ret = new ArrayList<Row>();
        try {
            Cursor c =
                db.query(DATABASE_TABLE, new String[] {
                    "_id", "code", "name"}, null, null, null, null, null);
            int numRows = c.count();
            c.first();
            for (int i = 0; i < numRows; ++i) {
                Row row = new Row();
                row._Id = c.getLong(0);
                row.code = c.getString(1);
                row.name = c.getString(2);
                ret.add(row);
                c.next();
            }
        } catch (SQLException e) {
            Log.e("Exception on query", e.toString());
        }
        return ret;
    }

    public Row fetchRow(long rowId) {
        Row row = new Row();
        Cursor c =
            db.query(true, DATABASE_TABLE, new String[] {
                "_id", "code", "name"}, "_id=" + rowId, null, null,
                null, null);
        if (c.count() > 0) {
            c.first();
            row._Id = c.getLong(0);
            row.code = c.getString(1);
            row.name = c.getString(2);
            return row;
        } else {
            row.rowId = -1;
            row.code = row.name= null;
        }
        return row;
    }

    public void updateRow(long rowId, String code, String name) {
        ContentValues args = new ContentValues();
        args.put("code", code);
        args.put("name", name);
        db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
    }
    public Cursor GetAllRows() {
        try {
            return db.query(DATABASE_TABLE, new String[] {
                    "_id", "code", "name"}, null, null, null, null, null);
        } catch (SQLException e) {
            Log.e("Exception on query", e.toString());
            return null;
        }
    }
}

In the method onCreate, you just have to put a single command given below to initialize the database : ...

在该方法中onCreate,您只需要输入下面给出的单个命令来初始化数据库:...

Db = new PersonDbHelper(this);

...

...

It will try to open 'PersonalDB' first.If it does not exist, then it will create a database. In this 'PersonDbHelper' class, you have methods for inserting, deleting, updating, querying the table.

它会先尝试打开“PersonalDB”。如果它不存在,那么它会创建一个数据库。在这个“PersonDbHelper”类中,您有插入、删除、更新、查询表的方法。

Here is the reference to above tutorial:

这是对上述教程的参考:

Creating my first android Database

创建我的第一个安卓数据库

You may also go through:

您还可以通过:

http://www.devx.com/wireless/Article/40842

http://www.devx.com/wireless/Article/40842

http://www.vogella.de/articles/AndroidSQLite/article.html

http://www.vogella.de/articles/AndroidSQLite/article.html

Hope this helps.

希望这可以帮助。

回答by prakrati

Create database:

创建数据库:

db= this.openOrCreateDatabase("db_hw3", MODE_PRIVATE, null); 

回答by Snake

回答by Alexander Oleynikov

Note that it's a good practice to wrap all your data access to ContentProviders

请注意,将所有数据访问权限封装到ContentProviders是一个好习惯