2010-04-28 106 views
28

我需要一步一步的过程来在Android中创建数据库。如何在android中创建数据库?

+0

有关更多信息,我建议您阅读http://developer.android.com/training/basics/data-storage/databases.html上的android文档。它一步一步教你一切。祝一切顺利 – user2070775 2013-02-14 18:51:28

回答

6

所有的数据访问创建的数据库:

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

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

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

_id integer 
code string 
name string 
gender string 

_id is for key increment, 

codenamegender是用于person描述。

当程序第一次被调用时,我们必须确保数据库和表被打开(如果存在)。否则,我们必须创建一个数据库和一个表。作为来自Android notepad sample的示例,这里是用于操作表Biodata的类PersonDbHelper

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; 
     } 
    } 
} 

在该方法中onCreate,你只要把下面给出一个命令初始化数据库: ...

Db = new PersonDbHelper(this); 

...

它会尝试打开'PersonalDB'first.If它不存在,那么它将创建一个数据库。在这个'PersonDbHelper'类中,你有插入,删除,更新,查询表的方法。

这里是参考上面的教程:

Creating my first android Database

您可能也经历:

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

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

希望这有助于。