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; } }
相关文章推荐
- Android 5.1 反射法无法获取 framework services.jar 中的类
- 在Mac系统上配置Android真机调试环境
- 我的Android之旅(二十三)---SQList数据库
- Android studio项目忽略某些文件提交Git
- 浅谈访问权限修饰符
- AndroidStudio——数据库SQLite
- 梳理android异步通信的概念
- Android自定义View之(下拉刷新+侧滑删除)
- Android开发实战之ViewPager的轮播
- Android:activity,fragment和service之我见(准备更新)
- 自定义view 的绘制
- android 利用AIDL实现Binder跨进程通信
- 【我的Android进阶之旅】Android Studio如何轻松整理字符串到string.xml中
- Activity生命周期实践记录(一)
- Android自助餐之插件化(使用Small框架)
- AIDL(Android Interface Definition Language)
- Android-隐式意图的匹配规则
- Android中dip、dp、sp、pt和px的区别
- Android-绑定服务
- Android ADB 详解