如何进行Android数据库 *** 作

如何进行Android数据库 *** 作,第1张

在自己Android数据库接收或发出一个系统action的时候,要名副其实。比如你响应一个view动作,做的确实edit的勾当,你发送一个pick消息,其实你想让别人做edit的事,这样都会造成混乱。

一个好的习惯是创建一个辅助类来简化你的Android数据库交互。考虑创建一个数据库适配器,来添加一个与数据库交互的包装层。它应该提供直观的、强类型的方法,如添加、删除和更新项目。数据库适配器还应该处理查询和对创建、打开和关闭数据库的包装。

它还常用静态的Android数据库常量来定义表的名字、列的名字和列的索引。下面的代码片段显示了一个标准数据库适配器类的框架。它包括一个SQLiteOpenHelper类的扩展类,用于简化打开、创建和更新数据库。

import android.content.Context import android.database.* import android.database.sqlite.* import android.database.sqlite.SQLiteDatabase.CursorFactory import android.util.Log public class MyDBAdapter{ // The name and column index of each column in your database. public static final String KEY_NAME=”name” public static final int NAME_COLUMN = 1 // TODO: Create public field for each column in your table. // SQL Statement to create a new database. private static final String DATABASE_CREATE = “create table “ + DATABASE_TABLE + “ (“ + KEY_ID + “ integer primary key autoincrement, “ + KEY_NAME + “ text not null)” // Variable to hold the database instance private SQLiteDatabase db // Context of the application using the database. private final Context context // Database open/upgrade helper private myDbHelper dbHelper public MyDBAdapter(Context _context) { context = _context dbHelper = new myDbHelper(context, DATABASE_NAME, null, DATABASE_VERSION) } public MyDBAdapter open() throws SQLException { db = dbHelper.getWritableDatabase() return this } public void close() { db.close() } public long insertEntry(MyObject _myObject) { ContentValues contentValues = new ContentValues() // TODO fill in ContentValues to represent the new row return db.insert(DATABASE_TABLE, null, contentValues) } public boolean removeEntry(long _rowIndex) { return db.delete(DATABASE_TABLE, KEY_ID + “=” + _rowIndex, null) >0 } public Cursor getAllEntries () { return db.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME}, null, null, null, null, null) } public MyObject getEntry(long _rowIndex) { MyObject objectInstance = new MyObject() // TODO Return a cursor to a row from the database and // use the values to populate an instance of MyObject return objectInstance } public int updateEntry(long _rowIndex, MyObject _myObject) { String where = KEY_ID + “=” + _rowIndex ContentValues contentValues = new ContentValues() // TODO fill in the ContentValue based on the new object return db.update(DATABASE_TABLE, contentValues, where, null) } private static class myDbHelper extends SQLiteOpenHelper{ public myDbHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version) } // Called when no database exists in // disk and the helper class needs // to create a new one. @Override public void onCreate(SQLiteDatabase _db) { _db.execSQL(DATABASE_CREATE) }

这种方式通常连接一个外部的数据库,第一个参数就是数据库文件,这个数据库不是当前项目中生成的,通常放在项目的Assets目录下,当然也可以在手机内,如上面参数那个目录,前提是那个文件存在且你的程序有访问权限。

另一种使用数据库的方式是,自己创建数据库并创建相应的数据库表,参考下面的代码:

public class DatabaseHelper extends SQLiteOpenHelper {

//构造,调用父类构造,数据库名字,版本号(传入更大的版本号可以让数据库升级,onUpgrade被调用)

public DatabaseHelper(Context context) {

super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION)

}

//数据库创建时调用,里面执行表创建语句.

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(createVoucherTable())

}

//数据库升级时调用,先删除旧表,在调用onCreate创建表.

@Override

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

db.execSQL("DROP TABLE IF EXISTS " + DatabaseConstant.TABLE_NAME)

onCreate(db)

}

//生成 创建表的SQL语句

private String createVoucherTable() {

StringBuffer sb = new StringBuffer()

sb.append(" CREATE TABLE ").append(DatabaseConstant.TABLE_NAME).append("( ").append(“ID”)

.append(" TEXT PRIMARY KEY, ")

.append(“USER_ID”).append(" INTEGER, ").append(“SMS_CONTENT”).append(" TEXT ) ")

return sb.toString()

}

} 继承SQLiteOpenHelper并实现里面的方法.

之后:

//得到数据库助手类

helper

=

new

DatabaseHelper(context)

//通过助手类,打开一个可读写的数据库连接

SQLiteDatabase

database

=

helper.getReadableDatabase()

//查询表中所有记录

database.query(DatabaseConstant.TABLE_NAME,

null,

null,

null,

null,

null,

null)

1.首先需要安装MySQL Server 5.1和navicat for mysql。这个安装是很简单的,网上很多教程,和安装一般软件差不多。只有在安装MySQL Server 5.1时,要注意选择字符编码为gb2312(中文)那个选项。

2. 使用navicat for mysql导入数据文件

a打开navicat for mysql,和localhost本地数据库连接,就可以看到刚才建立的数据库和表,

b可以导入本地的txt数据文件,注意保持格式正确,

c下面一步要注意一下,如果数据库中有中文数据,编码格式一定要选择是中文的GB2312,

d然后间隔符为空格(根据txt中的具体情况来定),

e并选择目标表,将每一列一一对应,即可导入。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9392608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存