文章目录

  • 一、案例演示
  • 二、实现步骤
    • 1、activity_main.xml
    • 2、MainActivity.java
    • 3、UserDao.java
    • 4、User.java
    • 5、SQLiteOpenHelper.java

一、案例演示

二、实现步骤

1、activity_main.xml

页面布局

代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_username"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:layout_marginTop="10dp"android:text="用户名:"/><EditTextandroid:id="@+id/et_username"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_toRightOf="@id/tv_username"android:minLines="2" /><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/et_username"android:layout_alignLeft="@id/et_username"android:layout_marginTop="10dp"android:inputType="textPassword"android:minLines="2"android:textSize="30sp" /><TextViewandroid:id="@+id/tv_choiceB"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignTop="@id/et_password"android:textSize="30sp"android:text="密    码:"/><EditTextandroid:id="@+id/et_age"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/et_password"android:layout_alignLeft="@id/et_password"android:layout_marginTop="10dp"android:minLines="2" /><TextViewandroid:id="@+id/tv_age"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignTop="@id/et_age"android:textSize="30sp"android:text="年    龄:"/><Buttonandroid:id="@+id/bt_save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/tv_age"android:layout_alignTop="@id/bt_query"android:text="保存"android:textSize="25sp" /><Buttonandroid:id="@+id/bt_update"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="修改"android:layout_toRightOf="@id/bt_query"android:layout_below="@id/et_age"android:layout_marginTop="10dp"android:layout_marginLeft="10dp"android:textSize="25sp"/><Buttonandroid:id="@+id/bt_delete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除"android:layout_toRightOf="@id/bt_update"android:layout_below="@id/et_age"android:layout_marginTop="10dp"android:layout_marginLeft="10dp"android:textSize="25sp"/><Buttonandroid:id="@+id/bt_query"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/et_age"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_toRightOf="@id/bt_save"android:text="查询"android:textSize="25sp" /><TextViewandroid:id="@+id/tv_show"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/bt_save"android:textSize="25dp" /></RelativeLayout>

2、MainActivity.java

通过点击不同的按钮,进行不同的增删改查操作

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private SQLiteOpenHelper helper;private UserDao userDao;private User user;private EditText et_username,et_password,et_age;private Button bt_save,bt_query,bt_update,bt_delete;private TextView tv_show;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化init();userDao=new UserDao(this);}public void init(){et_username = findViewById(R.id.et_username);et_password = findViewById(R.id.et_password);et_age = findViewById(R.id.et_age);bt_save = findViewById(R.id.bt_save);bt_query = findViewById(R.id.bt_query);bt_update = findViewById(R.id.bt_update);bt_delete = findViewById(R.id.bt_delete);tv_show = findViewById(R.id.tv_show);bt_save.setOnClickListener(this);bt_query.setOnClickListener(this);bt_update.setOnClickListener(this);bt_delete.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.bt_save:{user=new User(et_username.getText().toString(),et_password.getText().toString(),Integer.parseInt((et_age.getText().toString())));long i=userDao.addUser(user);if(i!=-1){Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();}else {Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show();}break;}case R.id.bt_delete:{int i=  userDao.deleteUser(et_username.getText().toString());if(i!=0){Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();}else {Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show();}break;}case R.id.bt_update:{user=new User(et_username.getText().toString(),et_password.getText().toString(),Integer.parseInt((et_age.getText().toString())));int i=  userDao.updateUser(user);if(i!=0){Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();}else {Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show();}break;}case R.id.bt_query:{//为了解决查询重复问题,需要先创建一个StringBuffer或者String类型对象,用于存储数据,存储后在给控件赋值就可以解决ArrayList list=userDao.queryAll();StringBuffer buffer=new StringBuffer();if(list.size()==0){tv_show.setText("没有数据");}else {for (int i=0;i<list.size();i++){User user= (User) list.get(i);buffer.append("id:" +user.getId()+"用户名:"+user.getUsername()+"密码:"+user.getPassword()+"年龄:"+user.getAge()+"\n");}tv_show.setText(buffer);}break;}}}
}

3、UserDao.java

包含对数据库的增删改查方法

public class UserDao {private SQLiteOpenHelper helper;public UserDao(Context context){helper=new SQLiteOpenHelper(context,"user1",null,1);}//添加数据public long addUser(User user){//1.获取数据库对象SQLiteDatabase database=helper.getWritableDatabase();//那些列为空,可以设置为空ContentValues values=new ContentValues();//key是数据表的列名,value是要放进去的值values.put("username",user.getUsername());values.put("password",user.getPassword());values.put("age",user.getAge());//第一个参数表明,第二个参数自动赋值为null的列名,第三个参数数据//返回值long,插入成功行号,插入失败-1long i=database.insert("users",null,values);//关闭数据库database.close();return i;}//删除public int deleteUser(String username){//1.获取数据库对象SQLiteDatabase database=helper.getWritableDatabase();//第一个参数表明,第二个参数为删除条件,第三个参数为第二个参数中占位符所需值组成的字符串数组int i=database.delete("users","username=?",new String[]{username+""});//关闭数据库database.close();return i;}//修改public int updateUser(User user){//1.获取数据库对象SQLiteDatabase database=helper.getWritableDatabase();//那些列为空,可以设置为空ContentValues values=new ContentValues();//key是数据表的列名,value是要放进去的值values.put("username",user.getUsername());values.put("password",user.getPassword());values.put("age",user.getAge());//第一个参数表明,第二个参数新数据,第三个参数是条件int i=database.update("users",values,"username=?",new String[]{user.getUsername()});//关闭数据库database.close();return i;}//查询public ArrayList queryAll(){ArrayList list=new ArrayList();SQLiteDatabase database=helper.getWritableDatabase();Cursor cursor=database.query("users",null,null,null,null,null,null);list=convertFromCursor(cursor);return list;}//通过对Cursor对象遍历查询结果,并将其范围为一个list集合private ArrayList convertFromCursor(Cursor cursor){ArrayList list=new ArrayList();if(cursor!=null&&cursor.moveToFirst()){//通过游标遍历这个集合do{int id=cursor.getInt(cursor.getColumnIndex("id"));String username=cursor.getString(cursor.getColumnIndex("username"));String password=cursor.getString(cursor.getColumnIndex("password"));int age=cursor.getInt(cursor.getColumnIndex("age"));User user=new User(id,username,password,age);list.add(user);}while (cursor.moveToNext());}return list;}
}

4、User.java

实体类对应着user表中的字段

public class User {private int id;private String username;private String password;private int age;public User(int id, String username, String password, int age) {this.id = id;this.username = username;this.password = password;this.age = age;}public User(String username, String password, int age) {this.username = username;this.password = password;this.age = age;}public User(){};public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

5、SQLiteOpenHelper.java

创建表,更新表方法

public class SQLiteOpenHelper extends android.database.sqlite.SQLiteOpenHelper {private Context context;public static final String CREATE_TABLES="create table users ("+"id integer primary key autoincrement,"+"username text,"+"password text,"+"age integer)";public static final String CREATE_DEPARTMENT="create table department ("+"id integer primary key autoincrement,"+"departmentName text,"+"departCode text)";public SQLiteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);this.context=context;}//创建数据表(只有在第一次创建数据库的时候才会被调用)@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL(CREATE_TABLES);Toast.makeText(context, "success databases", Toast.LENGTH_SHORT).show();}//数据库的更新(第一个参数数据库对象,第二个参数旧版本号,第三个参数新版本号)//新版本号大于旧版本号就会调用onUpgrade方法@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {/*** //如果数据表存在就删除*         sqLiteDatabase.execSQL("drop table if exists users");*         sqLiteDatabase.execSQL("drop table if exists department");*         onCreate(sqLiteDatabase);*/switch (i){case 1:sqLiteDatabase.execSQL(CREATE_DEPARTMENT);}}
}

Android 数据库增删改查相关推荐

  1. IntelliJ Idea SpringBoot 数据库增删改查实例

    . ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \\\\( ( )\___ | '_ | '_| | '_ \/ _` | \\\\ \\/ ___)| | ...

  2. android开发c s架构,【开源】基于C/S架构的Android员工增删改查客户端

    背景:html 期末快到了,各门课的课程设计都要来临了,最近Java课的课程设计就在想着作什么好,因而想了下弄一个android的应用吧,因而便有下文了.java 刚入门android,技术很不过关, ...

  3. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现

    常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...

  4. Mysql (一)Mysql 数据库增删改查

    mysql数据库增删改查增:create database DBname charset gbk; 删:drop database DBname; 改:alter database DBname ch ...

  5. sql增删改查_快速搞定数据库增删改查|附思维导图

    数据库学习,增删改查一直是测试工程师面试笔试的必考知识点,对于常用sql语法我们一定要牢记于心,尤其是各种查询的用法,在面试的时候,一个小小的知识点,面试官都可以推断出求职者的基础是否扎实. 下面是关 ...

  6. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  7. php+mysql+into_PHP+Mysql 如何实现数据库增删改查

    PHP+Mysql实现数据库增删改查的方法:1.创建入口文件[index.html]连接数据库.查询数据:2.点击增加按钮,通过[addnews.html]添加数据:3.点击删除按钮,通过服务端文件[ ...

  8. Java连接Mysql数据库增删改查实现

    Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...

  9. flask对mysql数据库增删改查_Flask学习(三) - Flask-SQLAlchemy对数据库增删改查

    Flask-SQLAlchemy对数据库增删改查 安装 pip install flask-sqlalchemy 具体不多说了,主要是对数据库进行简单的增删改查,上代码,看注释 @app.route( ...

最新文章

  1. 【Groovy】闭包 Closure ( 闭包定义 | 闭包类型 | 查看编译后的字节码文件中的闭包类型变量 )
  2. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )
  3. CTFshow 反序列化 web266
  4. 玩游戏4g计算机的内存不足,windows8.1玩游戏经常提示内存不足
  5. 全境封锁UI游戏设计指南
  6. 陈丕宏:公司领导人对企业文化的影响
  7. 无人车前轮转向分辨率校准
  8. python中的数据成员有两类_Python类和对象
  9. 可用子网数要不要减2_子网数、主机数与子网掩码的关系
  10. 报表工具对比评论汇总,选型看这一篇就够了---------报表工具对比软文最全的收集汇总帖子
  11. 中仪股份管道机器人_中仪股份 X5-HT 管道检测机器人
  12. 文科专业考计算机专业研究生,跨专业文科生考计算机研究生的经验
  13. 用JavaScript写一个简单的网页倒计时插件
  14. 最畅销的销售书籍推荐:《销售管理必读12篇》
  15. ios 视频处理详解一(视频导出)
  16. C#:实现Zhang Suen细化算法(附完整源码)
  17. 2022年1月份报告合集(共222份)
  18. node.js使用puppeteer来html生成pdf
  19. c语言中tc和vc有什么区别,转:写C++用什么编译器好——TC,VC++6.0,DEV C++,VS2005浅显比较...
  20. 对参考文献格式的一些举例

热门文章

  1. 修复openssl漏洞,升级openssl
  2. 网络游戏《丛林战争》开发与学习之(四):游戏客户器端的功能开发(上)
  3. 基于几个多分类的算法实现中风预测(准确率95.5%)
  4. 如何判断两个ip地址是否在同一个网段
  5. 商标注册和版权登记的区别有哪些
  6. 【重识云原生】第六章容器基础6.4.5.3节——Deployment实现原理解析
  7. 合并报表编制采用的理论_母公司在实际编制合并财务报表时,可以任意选择运用一种合并财务报表的合并理论。( )_搜题易...
  8. 给大家分享一个可以查询sci期刊、中文CSCD期刊实时影响因子的网站
  9. 解析底层原理!阿里P7级别面试经验总结,2年以上经验必看
  10. [资料]Adams-matlab联合仿真