private static final String DB_NAME = "user.db";
private static final String TABLE_NAME = "t_user";
private UserSqliteOpenHelper helper;
private ArrayList<User> al = new ArrayList<User>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_db);
helper = new UserSqliteOpenHelper(this, DB_NAME, null, 1);
}
// 创建数据库
public void createDB(View view) {
// 如果数据库还不存在 会执行onCreate()方法并获取数据库对象, 如果已存在会直接得到当前数据库(不执行onCreate)
SQLiteDatabase db = helper.getWritableDatabase();
db.close();
}
// 使用sql语句添加数据
public void insert1(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "insert into t_user(c_name,c_age,c_phone) values (?,?,?)";
db.execSQL(sql, new Object[] { "钢铁侠", 40, "999" });
// 关闭数据库
db.close();
}
// 使用Android自带api添加数据
public void insert2(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("c_name", "蜘蛛侠");
values.put("c_age", 18);
values.put("c_phone", "888");
// 参数1:表名 参数2:如果要求传的每个字段都不为null的话就传null, 参数3:类似双列集合,用来设置需要插入数据的内容
// 返回值:插入成功后 会将插入的新数据对应的id返回,如果返回-1代表插入失败
long l = db.insert(TABLE_NAME, null, values);
Toast.makeText(this, "" + l, Toast.LENGTH_SHORT).show();
db.close();
}
// 使用sql语句删除数据
public void delete1(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "delete from t_user where c_age = ?";
db.execSQL(sql, new Object[] { 40 });
db.close();
}
// 使用Android自带api删除数据
public void delete2(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
// int i = db.delete(TABLE_NAME, null, null);//全删
// 参数1:表名 参数2:删除的筛选条件 参数3:?的实际值 返回值:删除数据的条数
int i = db.delete(TABLE_NAME, "c_phone = ?", new String[] { "888" });
Toast.makeText(this, "" + i, Toast.LENGTH_SHORT).show();
db.close();
}
// 使用sql语句修改数据
public void update1(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "update t_user set c_phone = ? where c_name = ?";
db.execSQL(sql, new Object[] { "111", "钢铁侠" });
db.close();
}
// 使用Android自带api修改数据
public void update2(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("c_name", "浩克");
// 参数1:表名 参数2:需要设置的新的字段和值 参数3:筛选条件 参数3:?的实际值 返回值:成功修改的数据条数
int i = db.update(TABLE_NAME, values, "c_age > ?",
new String[] { 19 + "" });
Toast.makeText(this, "" + i, Toast.LENGTH_SHORT).show();
db.close();
}
// 使用sql语句查询数据
public void query1(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
String sql = "select * from t_user";
Cursor cursor = db.rawQuery(sql, null);
// 是否有下一条数据
while (cursor.moveToNext()) {
// 获取索引为0那一列的数据 其实是id
int id = cursor.getInt(0);
// 获取索引为1那一列的数据 其实是name
String name = cursor.getString(1);
// 获取索引为2那一列的数据 其实是age
int age = cursor.getInt(2);
// 获取索引为3那一列的数据 其实是phone
String phone = cursor.getString(3);
// 封装一个User类管理这四个数据
User user = new User(id, name, age, phone);
// 把当前user对象添加到一个集合中去
al.add(user);
}
// 检测数据
Log.d("tag", al.toString());
// 关闭游标和数据库
cursor.close();
db.close();
}
// 使用Android自带api查询数据
public void query2(View view) {
SQLiteDatabase db = helper.getWritableDatabase();
// 查询所有
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
// Cursor cursor = db.query(TABLE_NAME,
// new String[] { "c_name", "c_age" }, "c_age < ?",
// new String[] { "" + 20 }, null, null, null);
// 是否有下一条数据
while (cursor.moveToNext()) {
// 获取索引为0那一列的数据 其实是id
int id = cursor.getInt(0);
// 获取索引为1那一列的数据 其实是name
String name = cursor.getString(1);
// 获取索引为2那一列的数据 其实是age
int age = cursor.getInt(2);
// 获取索引为3那一列的数据 其实是phone
String phone = cursor.getString(3);
// 封装一个User类管理这四个数据
User user = new User(id, name, age, phone);
// 把当前user对象添加到一个集合中去
al.add(user);
}
// 关闭游标和数据库
cursor.close();
db.close();
Android 数据库详解 SQLiteOpenHelper
最新推荐文章于 2024-08-21 16:05:03 发布