一个好的习惯是创建一个辅助类来简化你的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并选择目标表,将每一列一一对应,即可导入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)