Android-数据库操作

本文介绍了一个使用SQLite进行用户数据增删查改(CRUD)操作的Java类实现。包括如何通过ContentValues添加用户,根据用户名删除用户记录,查询特定用户名的详细信息,并更新现有用户的用户名和密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class SqlDao {

private MyDBOpenHelper dbOpenHelper;

public SqlDao(Context context) {
  dbOpenHelper = new MyDBOpenHelper(context);
}

// 增加
public void addUser(String username, String password) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  if (db.isOpen()) {
   ContentValues values  =  new ContentValues();
   values.put("username", username);
   values.put("password", password);
   db.insert("user", null, values);
   /*db.execSQL("insert into user(username,password) values(?,?)",
     new Object[] { username, password });*/
  }
  db.close();
}

// 删除
public void deleteUser(String username) {
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  if(db.isOpen()){
   db.delete("user", "username=?", new String[]{username});
   //db.execSQL("delete from user where username=?", new Object[]{username});
  }
  db.close();
}

// 查找
public User findUser(String username) {
  User user = null;
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
  /*if (db.isOpen()) {
   Cursor cursor = db.rawQuery("select * from user where username=?",
     new String[] { username });
   if (cursor.moveToFirst()) {
    user=new User();
    int index  = cursor.getColumnIndex("username");
    String name= cursor.getString(index);
    user.setUsername(name);
    int index2  = cursor.getColumnIndex("password");
    String pwd= cursor.getString(index2);
    user.setPassword(pwd);
    cursor.close();
   }
  }*/
  Cursor cursor = db.query("user", null, "username=?", new String[]{username}, null, null, null);
  if(cursor.moveToFirst()){
   while(cursor.moveToNext()){
    user = new User();
    int columnIndexUsername = cursor.getColumnIndex("username");
    int columnIndexPassword = cursor.getColumnIndex("password");
    String name=  cursor.getString(columnIndexUsername);
    String pwd= cursor.getString(columnIndexPassword);
    user.setUsername(name);
    user.setPassword(pwd);
   }
  }
  db.close();
  return user;
}

// 修改
public void updateUser(String oldName, String newName, String newPassword) {
  User user = findUser(oldName);
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  if(user!=null){
   //db.execSQL("update user set username=?,password=? where username=?", new Object[]{newName,newPassword,oldName});
   ContentValues values = new ContentValues();
   values.put("username", newName);
   values.put("password", newPassword);
   db.update("user", values, "username=?", new String[]{oldName});
  }
  db.close();
}
public List<User> getAll(){
  List<User> list = new ArrayList<User>();
  User user = null;
  SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  if(db.isOpen()){
   Cursor cursor = db.query("user", null, null, null, null, null, null);
   if(cursor.moveToFirst()){
    while(cursor.moveToNext()){
     user = new User();
     int columnIndexUsername = cursor.getColumnIndex("username");
     int columnIndexPassword = cursor.getColumnIndex("password");
     String name=  cursor.getString(columnIndexUsername);
     String pwd= cursor.getString(columnIndexPassword);
     user.setUsername(name);
     user.setPassword(pwd);
     list.add(user);
    }
   }
   cursor.close();
  }
  db.close();
  return list;
}
}

--------------------------------------------------------------------------------------------------------------------------------

public class MyDBOpenHelper extends SQLiteOpenHelper {
/**
  *
  * @param context 应用程序上下文
  * @param name    数据库的名字
  * @param factory 查询数据库的游标工厂 一般情况下 用sdk默认的
  * @param version  数据库的版本 版本号必须不小1
  * 
  */
public MyDBOpenHelper(Context context) {
  super(context, "mydb.db", null , 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
  System.out.println("oncreat被调用");
  db.execSQL("CREATE TABLE user (userid integer primary key autoincrement , username varchar(40),password varchar(40))");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  System.out.println("update被调用");
  db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL ");
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值