android 怎么读取数据库中的数据?
3个回答
展开全部
android读取数据库可以使用sqlite一些api进行读取,实例如下:
/**
* 查找一条数据
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //创建数据库辅助类
Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()}); //创建一个游标
if(cursor.moveToFirst()){ //循环遍历查找数组
int uid2=cursor.getInt(cursor.getColumnIndex("uid"));
String uname=cursor.getString(cursor.getColumnIndex("uname"));
String uaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
User user=new User();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
return user;
}
cursor.close();
return null;
}
展开全部
Android里面Sqlite的使用
使用步骤
1,创建一个SqliteOpenHelper的子类
public class MySqliteOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1;//数据库版本 public static final String DATABASE_NAME="user.db";//数据库文件 名 public static final String TABLE_NAME="user";//表名 //字段名 public static final String ID="id"; public static final String NAME="name"; public static final String AGE="age"; /** * 构造方法 * @param context :上下文 * @param name :数据文件名 * @param factory :数据库工厂 使用过程中传null * @param version :数据库版本 1 */ public MySqliteOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } /** * 当数据库打开时调用 * @param db 数据库操作对象 */ @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); System.out.println("-------onOpen"); } /** * 创建数据库的方法 * @param db 数据库操作对象 CRUD ---CREATE READ UPDATE DELETE */ @Override public void onCreate(SQLiteDatabase db) { System.out.println("-------onCreate"); } /** *当数据库的版本有提升时调用 * @param db 数据库操作对象 * @param oldVersion 老版本号 * @param newVersion 新版本号 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //更新表 //更新数据 System.out.println("-------onUpgrade"); } /** * 当数据库版本降低时调用 ---没什么用 * @param db * @param oldVersion * @param newVersion */ @Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { super.onDowngrade(db, oldVersion, newVersion); System.out.println("-------onUpgrade"); }}
onCreate方法:在第一次调用getReadableDatabase(),getWriteableDatabase()方法里调用【如果磁盘上没有数据库文件就会调用】
onOpen方法:在调用getReadableDatabase(),getWriteableDatabase()调用
onUpgrade()方法,当数据库版本提升时调用
getWritableDatabase()得到可读可写的数据库操作对象。如果内存不足,该方法会锁定数据库,并抛异常
getReadableDatabase()得到可读写的数据库操作对象,,如果内存不足,数据库就只能写了
2,重写onCreate方法
public MySqliteOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = "CREATE TABLE " + TABLE_NAME + "( " + _ID + " Integer primary key autoincrement," + NAME + " TEXT, " + PASSWORD + " TEXT)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
3,初始化数据库
//创建数据库
public void mysqlite(View view)
{
//创建 实现工具类
DBHelper dh = new DBHelper("test.db",1);
//连接数据库 获取数据库实例
//getWritableDatabase() 数据写满会报错
//getReadableDatabase() 数据写满不会报错
SQLiteDatabase sd = dh.getWritableDatabase();
sd.close();
4,对数据库进行CRUD
参考demo:
public class DBHelper { private final static String DATABASE_NAME = "TestDB2.db";// 数据库文件名 private final static int VERSION = 1;// 数据库版本 private final static String TABLE_NAME = "users";// 表名 private final static String _ID = "_id";// 编号 private final static String NAME = "name";// 用户名字段 private final static String PASSWORD = "password";// 用户密码 // 操作数据库的类 private SQLiteDatabase database; MySQLiteOpenHepler hepler; // 写一个内部类去处理数据库的创建和版本的更新 class MySQLiteOpenHepler extends SQLiteOpenHelper { public MySQLiteOpenHepler(Context context) { super(context, DATABASE_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = "CREATE TABLE " + TABLE_NAME + "( " + _ID + " Integer primary key autoincrement," + NAME + " TEXT, " + PASSWORD + " TEXT)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } public DBHelper(Context context) { hepler = new MySQLiteOpenHepler(context); database = hepler.getWritableDatabase(); } // 添加 public void insert(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.insert(TABLE_NAME, null, values); } // 修改 public void update(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.update(TABLE_NAME, values, _ID + "=?", new String[] { String.valueOf(user.getId()) }); } // 删除 public void delete(int id) { database.delete(TABLE_NAME, _ID + "=?", new String[] { String.valueOf(id) }); }// 查询一个 public User queryById(int id) { User u = null; Cursor cursor = database.query(TABLE_NAME, null, _ID + "=?", new String[] { String.valueOf(id) }, null, null, null); if (cursor.getCount() > 0) { cursor.moveToNext(); u = new User(cursor.getInt(0), cursor.getString(1), cursor.getString(2)); } return u; } }
使用步骤
1,创建一个SqliteOpenHelper的子类
public class MySqliteOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1;//数据库版本 public static final String DATABASE_NAME="user.db";//数据库文件 名 public static final String TABLE_NAME="user";//表名 //字段名 public static final String ID="id"; public static final String NAME="name"; public static final String AGE="age"; /** * 构造方法 * @param context :上下文 * @param name :数据文件名 * @param factory :数据库工厂 使用过程中传null * @param version :数据库版本 1 */ public MySqliteOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } /** * 当数据库打开时调用 * @param db 数据库操作对象 */ @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); System.out.println("-------onOpen"); } /** * 创建数据库的方法 * @param db 数据库操作对象 CRUD ---CREATE READ UPDATE DELETE */ @Override public void onCreate(SQLiteDatabase db) { System.out.println("-------onCreate"); } /** *当数据库的版本有提升时调用 * @param db 数据库操作对象 * @param oldVersion 老版本号 * @param newVersion 新版本号 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //更新表 //更新数据 System.out.println("-------onUpgrade"); } /** * 当数据库版本降低时调用 ---没什么用 * @param db * @param oldVersion * @param newVersion */ @Override public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { super.onDowngrade(db, oldVersion, newVersion); System.out.println("-------onUpgrade"); }}
onCreate方法:在第一次调用getReadableDatabase(),getWriteableDatabase()方法里调用【如果磁盘上没有数据库文件就会调用】
onOpen方法:在调用getReadableDatabase(),getWriteableDatabase()调用
onUpgrade()方法,当数据库版本提升时调用
getWritableDatabase()得到可读可写的数据库操作对象。如果内存不足,该方法会锁定数据库,并抛异常
getReadableDatabase()得到可读写的数据库操作对象,,如果内存不足,数据库就只能写了
2,重写onCreate方法
public MySqliteOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = "CREATE TABLE " + TABLE_NAME + "( " + _ID + " Integer primary key autoincrement," + NAME + " TEXT, " + PASSWORD + " TEXT)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
3,初始化数据库
//创建数据库
public void mysqlite(View view)
{
//创建 实现工具类
DBHelper dh = new DBHelper("test.db",1);
//连接数据库 获取数据库实例
//getWritableDatabase() 数据写满会报错
//getReadableDatabase() 数据写满不会报错
SQLiteDatabase sd = dh.getWritableDatabase();
sd.close();
4,对数据库进行CRUD
参考demo:
public class DBHelper { private final static String DATABASE_NAME = "TestDB2.db";// 数据库文件名 private final static int VERSION = 1;// 数据库版本 private final static String TABLE_NAME = "users";// 表名 private final static String _ID = "_id";// 编号 private final static String NAME = "name";// 用户名字段 private final static String PASSWORD = "password";// 用户密码 // 操作数据库的类 private SQLiteDatabase database; MySQLiteOpenHepler hepler; // 写一个内部类去处理数据库的创建和版本的更新 class MySQLiteOpenHepler extends SQLiteOpenHelper { public MySQLiteOpenHepler(Context context) { super(context, DATABASE_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表 String sql = "CREATE TABLE " + TABLE_NAME + "( " + _ID + " Integer primary key autoincrement," + NAME + " TEXT, " + PASSWORD + " TEXT)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } public DBHelper(Context context) { hepler = new MySQLiteOpenHepler(context); database = hepler.getWritableDatabase(); } // 添加 public void insert(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.insert(TABLE_NAME, null, values); } // 修改 public void update(User user) { ContentValues values = new ContentValues(); values.put(NAME, user.getName()); values.put(PASSWORD, user.getPassword()); database.update(TABLE_NAME, values, _ID + "=?", new String[] { String.valueOf(user.getId()) }); } // 删除 public void delete(int id) { database.delete(TABLE_NAME, _ID + "=?", new String[] { String.valueOf(id) }); }// 查询一个 public User queryById(int id) { User u = null; Cursor cursor = database.query(TABLE_NAME, null, _ID + "=?", new String[] { String.valueOf(id) }, null, null, null); if (cursor.getCount() > 0) { cursor.moveToNext(); u = new User(cursor.getInt(0), cursor.getString(1), cursor.getString(2)); } return u; } }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做一个WEBServerse取出数据转换成XML输出,再用android。bundle接受编译
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询