利用SQLiteOpenHelper创建数据库,进行增删改查操作
Android中提供SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法进行更新。
首先建立一个名为MyDbHelper的类继承SQLiteOpenHelper,目的是为了创建数据库。
我们要用到三个类,
MyDbHelper(创建数据库) UserDao(操作的方法) User(数据)
一个Activity 代码如下:
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by Administrator on 2016/8/22.
*/
public class MyDbHelper extends SQLiteOpenHelper {
private final String TABLENAME="info"; //创建表名为info的数据库
private final String INFO_COLUM_ID="_id"; //依次为表中的数据,其中“_id”表示id为主键
private final String INFO_COLUM_NAME="name"; //其次为name,pwd,age,img
private final String INFO_COLUM_PWD="pwd";
private final String INFO_COLUM_AGE="age";
private final String INFO_COLUM_IMG="img"; public MyDbHelper(Context context){ super(context,"user.db",null,1); //user.db表示数据库名 1表示版本号,以后如果修改代码后,改版本号进行更新 }
public MyDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} @Override
public void onCreate(SQLiteDatabase db) {
StringBuilder sql=new StringBuilder();
sql.append(" Create table if not exists ");
sql.append(TABLENAME+"(");
sql.append(INFO_COLUM_ID+" integer primary key autoincrement,"); //integer primary key autoincrement表示主键
sql.append(INFO_COLUM_NAME+" varchar(10),"); //varchar表示长度
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 exist"+TABLENAME; //更新时调用
db.execSQL(sql);
onCreate(db); }
}
UserDao类中写增删改查的方法
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2016/8/22.
*/
public class UserDao {
private MyDbHelper myDbHelper;
public UserDao(Context context){
myDbHelper=new MyDbHelper(context);
}
//插入数据
public void insert(User user){
SQLiteDatabase db=myDbHelper.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 void delete(){
SQLiteDatabase db=myDbHelper.getWritableDatabase();
db.delete("info", null, null);
db.close();
}
//删除一条数据
public void deleteUser(String id){
SQLiteDatabase db=myDbHelper.getWritableDatabase();
db.delete("info","_id=?",new String []{id});
db.close();
}
//查询一条数据
public User searchUser(String id){
SQLiteDatabase db=myDbHelper.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=myDbHelper.getReadableDatabase();
Cursor cs=db.query("info", null, null, null, null, null, null);
User user=null;
List<User> list=new ArrayList<>();
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 update(User user){
SQLiteDatabase db=myDbHelper.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});
db.close();
} user类
public class User {
private int userId;
private String name;
private String pwd;
private String age;
private String 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 getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getImg() {
return img;
} public void setImg(String img) {
this.img = img;
} @Override
public String toString() {
return "User{" +
"userId=" + userId +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
", age='" + age + '\'' +
", img='" + img + '\'' +
'}';
}
}
}
Activity中的代码如下
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast; import com.example.administrator.ch02.entity.User;
import com.example.administrator.ch02.entity.UserDao; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity {
private EditText name,age,pwd; //布局中的EditView
private Button inster,search,delete,update; //布局中的Button
private TextView show; //用于显示数据
private UserDao userDao; //dao类
private Spinner spinner; //布局中的Spinner
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name= (EditText) findViewById(R.id.name);
age= (EditText) findViewById(R.id.age);
pwd= (EditText) findViewById(R.id.pwd);
inster= (Button) findViewById(R.id.inster1);
search= (Button) findViewById(R.id.search);
spinner= (Spinner) findViewById(R.id.spinner);
delete= (Button) findViewById(R.id.delete);
update= (Button) findViewById(R.id.update);
userDao=new UserDao(this);
inster.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(getBaseContext(), "新增成功", Toast.LENGTH_SHORT).show(); }
});
search.setOnClickListener(new View.OnClickListener() { //查询数据
@Override
public void onClick(View v) {
List<User> list=userDao.search();
// show.setText(list.toString());
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);
spinner.setAdapter(aa);
}
});
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { //spinner点击事件
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String str = spinner.getSelectedItem().toString();
if (!str.equals("")) {
String id1 = str.split(":")[0];
User user = userDao.searchUser(id1);
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 = spinner.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 = spinner.getSelectedItem().toString();
if (!str.equals("")) {
String id = str.split(":")[0];
User user=userDao.searchUser(id);
user.setName(name.getText().toString());
user.setPwd(pwd.getText().toString());
user.setAge(age.getText().toString());
userDao.update(user);
}
}
});
}
}
利用SQLiteOpenHelper创建数据库,进行增删改查操作的更多相关文章
- 通过jdbc连接MySql数据库的增删改查操作
一.获取数据库连接 要对MySql数据库内的数据进行增删改查等操作,首先要获取数据库连接 JDBC:Java中连接数据库方式 具体操作如下: 获取数据库连接的步骤: 1.先定义好四个参数 String ...
- TP5.1:数据库的增删改查操作(基于面向对象操作)
我们现实中对数据库的增删改查操作,都是使用模型类进行操作的(表名::),也就是面向对象操作,只有底层的代码用的是数据库操作(Db::table('表名')) 下面我将贴出模型类进行的增删改查操作,通过 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- python web.py操作mysql数据库,实现对数据库的增删改查操作
使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...
- JDBC 1 利用Statement对数据库进行增删改查
准备工作 1新建po类:User private int id; private String name; private String pwd; set,get方法省略 2 新建UserDao类, ...
- TP5.1:数据库的增删改查操作(基于数据库操作)
1.在app/index/controller文件夹下创建一个文件,名为:Operation 注意:起名一定要避开关键字,例如:mysql,curd等等,如果使用关键字起名,会造成报错! 在Opera ...
- mogoose 创建数据库并增删改查
下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); ...
- greendao对SQLite数据库的增删改查操作
利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...
- 创建支持CRUD(增删改查)操作的Web API(二)
一:准备工作 你可以直接下载源码查看 Download the completed project. 下载完整的项目 CRUD是指“创建(C).读取(R).更新(U)和删除(D)”,它们是四个 ...
- JavaWeb程序利用Servlet的对SQLserver增删改查操作
声明:学了几天终于将增删改查的操作掌握了,也发现了一些问题,所以总结一下. 重点:操作数据库主要用的是SQL语句跟其他无关. 一:前提知识:PreparedStatement PreperedStat ...
随机推荐
- C语言中.h和.c文件解析
整理自C语言中.h和.c文件解析(很精彩) Part.1(林锐<高质量C/C++编程>) 通过头文件来调用库功能.在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的 ...
- Web-Scale-IT 到底是啥?
Gartner 对 2015 年 10 大 IT 趋势的预测中有一个词条为:Web Scale IT.我们跟随 Matthias Ankli 来了解一下究竟什么是 Web Scale IT.本文译自 ...
- 树莓派学习路程No.1 GPIO功能初识 wiringPi安装
WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3.wiringPi使用C或者C++开发并且可以被其他语言包转,例如python.ruby或者PHP等.Wiri ...
- linux里的php使用phpize拓展各种功能(curl,zip,gd等等)
这里的实验以拓展zip功能为实例,成功使用zip功能需要如下步骤: 1.下载zip拓展包,并解压,并进入zip文件夹 tar -zxvf zip.tar.gz // 解压 cd zip //进入文件夹 ...
- 显示 SQLite 日志
通过在 Logcat 查看 SQL 执行语句可以帮助你调试 SQLite 问题, 使用 ADB SHELL 执行如下命令即可在 Logcat 输出 SQL 执行日志: adb shell setpro ...
- JAVA中ProcessBuilder执行cmd命令找不到路径的解决方法
今天遇到了一个很奇葩的问题,终于解决了,记一下,以做备忘. 前提条件:工程路径在D盘下 cmd要执行的可执行文件路径不在D盘下 然后...出事了............................ ...
- Linux学习笔记8——VIM编辑器的使用
在ubuntu中,敲入命令行:sudo apt-get install vim,然后输入系统密码,确认Y,即可下载vim 按下vim,在后面跟上文件的路径,即可进入文件到编辑模式,如果不存在该文件,将 ...
- 折腾iPhone的生活——5s使用的各种小技巧
电池: iPhone电池正常充电方法:随便充,想怎么充怎么充,想充就充,想停就停. 需要注意: 1.如果要闲置3个月以上,一定要冲到40%电以后再闲置 2.不要在-40~35度使用(应该是废话) 3. ...
- 折腾iPhone的生活——iPhone 5s 开启 assistive touch 后卡顿的问题
刚刚入手我的国行iPhone5s土狗灰,感觉倍棒~ 但是一上手就发现了一个问题:卡顿. 卡顿不仅体现在日常使用中,游戏中更加严重,当我玩水果忍者的时候,会发现切水果的画面都变得不流畅起来,这是拥有64 ...
- android源码编译环境的准备及编译之后使用emulator运行的方法 - 官方版
http://source.android.com/source/initializing.html http://blog.csdn.net/ithomer/article/details/6977 ...