Android---數據存儲SQLite

知識點

SQLite:輕量級,嵌入式、關係型數據庫.db文件 多用於手機裏 存放如:新聞
使用SQL語言輕鬆地實現增加、修改、刪除、查詢
一般使用ID爲主鍵:PRIVATE KEY 、字符串使用varchar
重點喲
SQLiteOpenHelper:
負責創建,打開,更新,關閉數據庫和創建數據表
通過SQL語句創建表
SQLiteDatabase:
執行SQL語句
執行對數據表的增刪改查
SQLiteDatabase:語句增刪改查解釋

下面代碼來咯:
MyDbHelpr .java

public class MyDbHelpr extends SQLiteOpenHelper {
    //private final String DBNAME ="user.db";
    private final String TABLE_NAME ="info";
    private final String INFO_COLUM_ID="_id";//列的名字前加_
    private final String INFO_COLUM_NAME="name";
    private final String INFO_COLUM_PWD="pwd";
    private final String INFO_COLUM_AGE="age";
    private final String INFO_COLUM_IMG="img";
    //創建"user.db"數據庫
    public MyDbHelpr(Context context){
        //第四個是版本,不能爲0,最小從1開始 需要升級的話修改版本號,當再次運行時會判斷版本號,如果版本號大於之前的會執行升級方法
        super(context,"user.db",null,1);

    }
    public MyDbHelpr(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    //系統回調的方法 存在就不走了
    //創建數據表info  建立列
    @Override
    public void onCreate(SQLiteDatabase db) {
        StringBuilder sql=new StringBuilder();
        sql.append("Create table if not exists ");//最後一句加空格
        sql.append(TABLE_NAME+" ( ");
        sql.append(INFO_COLUM_ID+ " integer primary key autoincrement, ");
        sql.append(INFO_COLUM_NAME+" varchar(10),");
        sql.append(INFO_COLUM_PWD+" varchar(10),");
        sql.append(INFO_COLUM_AGE+" varchar(10),");
        sql.append(INFO_COLUM_IMG+" varchar(10) ");
        sql.append(" ) ");
        db.execSQL(sql.toString());
    }
    //升級方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "drop table if exists "+TABLE_NAME;
        db.execSQL(sql);
        onCreate(db);
    }
}

建立Activity 命名爲SqliteTestActivity.java

public class SqliteTestActivity extends AppCompatActivity {
    private EditText name,age,pwd;
    private Button insert,select,delete,update;
    private TextView show;
    private UserDao userDao;
    private Spinner sp;
    private SimpleAdapter sa;
    private List<User> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sqlite_test);
        name= (EditText) findViewById(R.id.name);
        age= (EditText) findViewById(R.id.age);
        pwd= (EditText) findViewById(R.id.pwd);
        insert= (Button) findViewById(R.id.add);
        select= (Button) findViewById(R.id.search);
        delete= (Button) findViewById(R.id.delete);
        show= (TextView) findViewById(R.id.show);
        sp= (Spinner) findViewById(R.id.sp);
        update= (Button) findViewById(R.id.update);

        userDao=new UserDao(this);
        //新增方法
        insert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                User user= new User();
                user.setName(name.getText().toString());
                user.setAge(age.getText().toString());
                user.setPwd(pwd.getText().toString());
                userDao.insert(user);
                Toast.makeText(SqliteTestActivity.this, "新增成功", Toast.LENGTH_SHORT).show();
            }
        });
        //查詢
        select.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //將所有的信息放入到show中
                list = userDao.search();
                show.setText(list.toString());
                //將信息(id和name)放入下拉列表中
                List mydate = new ArrayList();
                for (User u : list) {
                    mydate.add(u.getUserId() + ":" + u.getName());
                }
                ArrayAdapter aa = new ArrayAdapter(getBaseContext(), android.R.layout.simple_list_item_1, mydate);
                sp.setAdapter(aa);
            }
        });
        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String str = sp.getSelectedItem().toString();
                if (!str.equals("")) {
                    String userid = str.split(":")[0];
                    User user = userDao.searchUser(userid);
                    name.setText(user.getName().toString());
                    age.setText(user.getAge().toString());
                    pwd.setText(user.getPwd().toString());
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = sp.getSelectedItem().toString();
                if (!str.equals("")) {
                    //分開兩個字符串
                    String id = str.split(":")[0];
                    userDao.deleteUser(id);
                }
            }
        });
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str =sp.getSelectedItem().toString();
                if(!str.equals("")){
                    String id =str.split(":")[0];
                    //User user=new User();
                    User user=userDao.searchUser(id);
                    user.setName(name.getText().toString());
                    user.setPwd(pwd.getText().toString());
                    user.setAge(age.getText().toString());
                    userDao.update(user);
                }
            }
        });
    }
}

UserDao 中寫方法

//運用增刪改查方法
public class UserDao {
    private MyDbHelpr myDbHelprl;
    public UserDao (Context context){
        myDbHelprl=new MyDbHelpr(context);

    }
    //插入數據
    public void insert(User user){
       SQLiteDatabase db = myDbHelprl.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put("name",user.getName());
        cv.put("pwd",user.getPwd());
        cv.put("age",user.getAge());
        cv.put("img",user.getImg());
        db.insert("info", null, cv);
        db.close();
    }
    //查詢一條數據
    public User searchUser(String id){
        SQLiteDatabase db=myDbHelprl.getReadableDatabase();
        //那個文件
        Cursor cs=db.query("info", null, "_id = ? ", new String[]{id}, null, null, null);
        User user = null;
        if (cs.moveToNext()){
            user=new User();
            user.setUserId(cs.getInt(cs.getColumnIndex("_id")));
            user.setName(cs.getString(cs.getColumnIndex("name")));
            user.setPwd(cs.getString(cs.getColumnIndex("pwd")));
            user.setAge(cs.getString(cs.getColumnIndex("age")));
            user.setImg(cs.getString(cs.getColumnIndex("img")));
         }
        cs.close();
        db.close();
        return user;
    }
    //查詢所有數據
    public List search(){
        SQLiteDatabase db=myDbHelprl.getReadableDatabase();
        //返回一個結果集
        Cursor cs=db.query("info", null, null, null, null, null, null);
        User user=null;
        List<User> list=new ArrayList<>();
       // cs.moveToFirst();
        while (cs.moveToNext()){
            user=new User();
            user.setUserId(cs.getInt(cs.getColumnIndex("_id")));
            user.setName(cs.getString(cs.getColumnIndex("name")));
            user.setPwd(cs.getString(cs.getColumnIndex("pwd")));
            user.setAge(cs.getString(cs.getColumnIndex("age")));
            user.setImg(cs.getString(cs.getColumnIndex("img")));
            list.add(user);
        }
        cs.close();
        db.close();
        return list;
    }
    //刪除所有的數據
    public void delete(){
        SQLiteDatabase db = myDbHelprl.getWritableDatabase();
        db.delete("info", null, null);
        db.close();
    }
    //刪除一天數據
    public void deleteUser(String id){
        SQLiteDatabase db = myDbHelprl.getWritableDatabase();
        db.delete("info","_id = ? ",new String[]{id});
        db.close();
    }
    //修改數據
    public void update(User user) {
        SQLiteDatabase db = myDbHelprl.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", user.getName());
        cv.put("pwd", user.getPwd());
        cv.put("age", user.getAge());
        cv.put("img", user.getImg());
        String id = String.valueOf(user.getUserId());
        db.update("info", cv, "_id = ? ", new String[]{id});
    }

}

User 類

public class User {
    private int userId;
    private String name;
    private String pwd;
    private String age;
    private String img;

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", age='" + age + '\'' +
                ", img='" + img + '\'' +
                '}';
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }
}

這裏寫圖片描述
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章