您的位置:首页 > 移动开发 > Android开发

Android---数据存储SQLite

2016-08-22 22:22 369 查看

知识点

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;
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: