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创建数据库,进行增删改查操作的更多相关文章

  1. 通过jdbc连接MySql数据库的增删改查操作

    一.获取数据库连接 要对MySql数据库内的数据进行增删改查等操作,首先要获取数据库连接 JDBC:Java中连接数据库方式 具体操作如下: 获取数据库连接的步骤: 1.先定义好四个参数 String ...

  2. TP5.1:数据库的增删改查操作(基于面向对象操作)

    我们现实中对数据库的增删改查操作,都是使用模型类进行操作的(表名::),也就是面向对象操作,只有底层的代码用的是数据库操作(Db::table('表名')) 下面我将贴出模型类进行的增删改查操作,通过 ...

  3. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  4. python web.py操作mysql数据库,实现对数据库的增删改查操作

    使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...

  5. JDBC 1 利用Statement对数据库进行增删改查

    准备工作 1新建po类:User private int id; private String name; private String pwd; set,get方法省略 2  新建UserDao类, ...

  6. TP5.1:数据库的增删改查操作(基于数据库操作)

    1.在app/index/controller文件夹下创建一个文件,名为:Operation 注意:起名一定要避开关键字,例如:mysql,curd等等,如果使用关键字起名,会造成报错! 在Opera ...

  7. mogoose 创建数据库并增删改查

    下载 npm i mongoose -s 连接数据库 const mongoose = require("mongoose"); mongoose.connect(dbURL); ...

  8. greendao对SQLite数据库的增删改查操作

    利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...

  9. 创建支持CRUD(增删改查)操作的Web API(二)

    一:准备工作 你可以直接下载源码查看 Download the completed project.     下载完整的项目 CRUD是指“创建(C).读取(R).更新(U)和删除(D)”,它们是四个 ...

  10. JavaWeb程序利用Servlet的对SQLserver增删改查操作

    声明:学了几天终于将增删改查的操作掌握了,也发现了一些问题,所以总结一下. 重点:操作数据库主要用的是SQL语句跟其他无关. 一:前提知识:PreparedStatement PreperedStat ...

随机推荐

  1. 如何使用GCD(ZZ)

    什么是GCD?       Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法.该方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4 ...

  2. Junit4学习笔记

    一.初始化标注 在老Junit4提供了setUp()和tearDown(),在每个测试函数调用之前/后都会调用. @Before: Method annotated with @Before exec ...

  3. jps命令(Java Virtual Machine Process Status Tool)

    1.介绍 用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程, ...

  4. 利用merge优化

    create table a1(TP_END_DATE NUMBER,WK_END_DATE NUMBER, MTH_START_DATE NUMBER, MTH_END_DATE NUMBER, T ...

  5. Executors常用的创建ExecutorService的几个方法说明

    一.线程池的创建 我们可以通过ThreadPoolExecutor来创建一个线程池. new ThreadPoolExecutor(corePoolSize, maximumPoolSize, kee ...

  6. BZOJ3687: 简单题

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3687 小呆开始研究集合论了,他提出了关于一个数集四个问题: 1.子集的异或和的算术和. 2.子 ...

  7. 深入浅出Node.js (附录A) - 安装Node

    A.1 Windows系统下的Node安装 A.2 Mac系统下Node的安装 A.3 Linux系统下Node的安装 A.4 总结 A.5 参考资源

  8. android逐行读取文件内容以及保存为文件

    用于长时间使用的apk,并且有规律性的数据 1,逐行读取文件内容 //首先定义一个数据类型,用于保存读取文件的内容 class WeightRecord { String timestamp; flo ...

  9. JVM分代垃圾回收策略的基础概念

    由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略.本文介绍了分代策略的目标,如何分代,以及垃圾回收的触发因素. 文章总结了JVM垃圾回收策略为什么要分代,如何分代,以及垃圾回收 ...

  10. java 运行项目不放到tomcat下的webapps文件夹下放到自己建的文件夹中的处理办法

    你需要在tomcat跟目录下的conf/server.xml中进行配置,配置方法如下: <Context path="/Project" docBase="D:\s ...