知識點
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;
}
}