Android中数据库的操作(增删改查)

在Android的开发,重要的就是的数据库,几乎每个App中都会用到Sqlit数据库存储一些数据,

activity_main.xml页面

<LinearLayout 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:background="@drawable/strawberry"android:orientation="vertical"tools:context="${relativePackage}.${activityClass}" ><EditTextandroid:id="@+id/editText2"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:hint="Enter age"android:inputType="text"android:textColor="#000000"android:textColorHint="#00aa00"android:textSize="20sp" /><EditTextandroid:id="@+id/editText1"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:hint="Enter Name"android:textColor="#000000"android:textColorHint="#00aa00"android:textSize="20sp" /><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Add Data" /><Buttonandroid:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Show Data" /><EditTextandroid:id="@+id/editText3"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:hint="Enter Name"android:textColor="#000000"android:textColorHint="#00aa00"android:textSize="20sp" ></EditText><Buttonandroid:id="@+id/button3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Delet" /><Buttonandroid:id="@+id/button4"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Update" /><Buttonandroid:id="@+id/button5"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Select" /><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="0.49"android:text=" "android:textColor="#f0ff0f"android:textColorHint="#00aa00"android:textSize="20sp" android:textAppearance="?android:attr/textAppearanceLarge" /></LinearLayout>

查询显示页面activity_show_data.xml

<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"tools:context="${relativePackage}.${activityClass}" ><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentTop="true" android:divider="#ff0000"android:dividerHeight="2dp"android:listSelector="#00ffff"></ListView></RelativeLayout>

数据库创建

新建java类(DBConnect.java)

package com.example.sqlitedemo1;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;public class DBConnect extends SQLiteOpenHelper {public static final String DATABASE_NAME = "niit";//要创建的数据库名public static final String TABLE_NAME = "emp"; //要创建的表名public static final int DATABASE_VERSION = 1; //使用的数据库版本//表中列名public static final String EID = "_id"; //第一列 主键public static final String ENAME = "EmpName"; //第二列 员工姓名public static final String EAGE = "EmpAge"; //第三列 员工年龄//建表 -->注意此处引号后补上空格private static final String CREATE_TABLE = " CREATE TABLE  " + TABLE_NAME+ "  ( " + EID + " INTEGER  PRIMARY KEY  AUTOINCREMENT, " + ENAME+ " VARCHAR( 255) , " + EAGE + " INTEGER ) ; ";//删表private static final String DROP_TABLE = " DROP TABLE  IF  EXISTS "+ TABLE_NAME;private Context context;//连接数据库(打开或新建)public DBConnect(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);this.context = context;}//建表@Overridepublic void onCreate(SQLiteDatabase db) {try {db.execSQL(CREATE_TABLE);//创建表} catch (Exception e) {Log.e("-----ERROR-----", e.getMessage());}}//若数据库需要更新 则删除旧表 创建新表  实际工作中需做好数据备份/* (non-Javadoc)* @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(* android.database.sqlite.SQLiteDatabase,*  int   旧数据库版本号,*  int         新数据库版本号)*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {try {Log.i("-----UPDATE------", "数据库已更新");db.execSQL(DROP_TABLE);//删除旧表onCreate(db);//建新表} catch (Exception e) {Log.e("----UPDATE ERROR---", e.getMessage());}}}

新建java类(DBQuery.java)

在此类中实现对数据库的增删改查操作,使用时就直接调用此类中的方法

public class DBQuery {public static ArrayList<String> dblist;//空单列集合 用于存储数据DBConnect dConnect;//引用继承SQLiteOpenHelper类的数据库连接类//1.生成数据库连接public DBQuery(Context context) {dConnect = new DBConnect(context);}}

1.主活动添加数据

public boolean dataInsert(String ename, int eage) {//打开数据库交由SQLiteDatabase对象管理SQLiteDatabase sdb = dConnect.getWritableDatabase();//单行数据存储对象cvContentValues contentValues = new ContentValues();//向行中存储数据contentValues.put(DBConnect.ENAME, ename);contentValues.put(DBConnect.EAGE, eage);//将此行数据加入到表中long id = sdb.insert(DBConnect.TABLE_NAME, null, contentValues);//判断是否添加成功if (id > 0)return true;else {return false;}}
  1. 查询所有数据
public ArrayList<String> getAllData() {dblist = new ArrayList<String>();//局部容器SQLiteDatabase sdc = dConnect.getWritableDatabase();//打开数据库//所有列名String[] columns = { DBConnect.EID, DBConnect.ENAME, DBConnect.EAGE };//查询表中所有数据Cursor cursor = sdc.query(DBConnect.TABLE_NAME, columns, null, null,null, null, null);//逐行遍历结果集while (cursor.moveToNext()) {//读取当前行idint eid = cursor.getInt(cursor.getColumnIndex(DBConnect.EID));//读取当前行nameString empName = cursor.getString(cursor.getColumnIndex(DBConnect.ENAME));//读取当前行ageint empAge = cursor.getInt(cursor.getColumnIndex(DBConnect.EAGE));//将三列数据拼接装入list,作为list中一条数据dblist.add(eid + " " + empName + " " + empAge);}return dblist;//将所有数据返还给要展示的组件}

3.更新数据

/** update:参数一:要更新的数据所在表名,*         参数二 新的数据*         参数三:要更新数据的查找条件*         参数四:条件的参数 数组* */public boolean updaData(int id,String name,int age){SQLiteDatabase sdc = dConnect.getWritableDatabase();//打开数据库String[] whereArgs={" "};whereArgs[0]=String.valueOf(id);ContentValues cv=new ContentValues();  //ContentValues存储基本类型的数据cv.put(DBConnect.ENAME,name);cv.put(DBConnect.EAGE, age);int result=sdc.update(DBConnect.TABLE_NAME,cv,"_id=?", whereArgs);if(result>0){return true;}else{return false;}}
  1. 按id查询数据,查询结果显示在主页
/** query:参数一:要更新的数据所在表名,*         参数二 要查找的列名 若设为null,则查所有*         参数三:要更新数据的查找条件*         参数四:条件的参数 数组* */public String querData(int id){SQLiteDatabase sdc = dConnect.getWritableDatabase();//打开数据库String[] whereArgs={" "};whereArgs[0]=String.valueOf(id);String[] columns = { DBConnect.ENAME, DBConnect.EAGE };Cursor cursor = sdc.query(DBConnect.TABLE_NAME, columns, "_id=?", whereArgs,null,null,null,null);String msg=null;while(cursor.moveToNext()){String empName = cursor.getString(cursor.getColumnIndex(DBConnect.ENAME));//读取当前行ageint empAge = cursor.getInt(cursor.getColumnIndex(DBConnect.EAGE));msg="EName:   "+empName+"    Eage :    "+empAge;}return msg;}
}

5.删除数据 功能;

/** delete:参数一:要更新的数据所在表名,*         参数三:要更新数据的查找条件*         参数四:条件的参数 数组*/public boolean deletData(int id){SQLiteDatabase sdb = dConnect.getWritableDatabase();//打开数据库String[] whereArgs={" "};whereArgs[0]=String.valueOf(id);Log.v("=================", "id");int result=sdb.delete(DBConnect.TABLE_NAME,"_id=?", whereArgs);if(result>0){return true;}else{return false;}}

MainActivity.java类中调用DBQuery.java中的方法

此过程中使用了匿名内部类事件监听器
1.绑定视图

package com.example.sqlitedemo1;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {EditText  name, age,id;Button save, show,del,upd,select;//保存数据  展示数据DBQuery mdq; //数据库操作对象TextView result;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//绑定视图name = (EditText)findViewById(R.id.editText1);age = (EditText) findViewById(R.id.editText2);id = (EditText) findViewById(R.id.editText3);result = (TextView) findViewById(R.id.textView1);save = (Button) findViewById(R.id.button1);show = (Button)findViewById(R.id.button2);del = (Button)findViewById(R.id.button3);upd= (Button)findViewById(R.id.button4);select = (Button)findViewById(R.id.button5);mdq = new  DBQuery(this);}

2.保存数据

 save.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {String uname =  name.getText().toString(); //获取用户名String uage = age.getText().toString(); //获取年龄//判空操作if( uname.isEmpty()){name.setError("Enter Uername");}else if(uage.isEmpty()){age.setError("Enter password");}else{//非空则添加数据int fage = Integer.parseInt(uage);//文本转数字boolean  status = mdq.dataInsert(uname, fage); //添加数据//是否添加成功  然后输入栏置空if(status){Toast.makeText(getApplicationContext(),"Data Inserted Successfully", Toast.LENGTH_LONG).show();name.setText("");age.setText("");}else{Toast.makeText(getApplicationContext(),"Data Inserted error", Toast.LENGTH_LONG).show();name.setText("");age.setText("");    }}}});
  1. 展示所有数据
show.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {Intent i = new Intent(MainActivity.this, ShowDataActivity.class);startActivity(i);}});}
}

此工程中将查到的所有数据activity_show_data.xml页面中显示出来,所有需要建一个ShowDataActivity.java类,用来传输数据

package com.example.sqlitedemo1;import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;public class ShowDataActivity extends Activity {ListView listView;//文本展开列表,可选取DBQuery dbq;ArrayAdapter<String> adapter;//初始化活动,加载数据到ListView进行展示@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_show_data);listView = (ListView) findViewById(R.id.listView1);dbq = new DBQuery(this);//打开数据库进行操作loadData();//加载数据}public void loadData() {ArrayList<String> data = dbq.getAllData();//调用DBQuery中的查询所有数据方法,取得数据//将数据装入适配器  data即数据adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, data);//将适配器装入ListView对象listView.setAdapter(adapter);//数据已更改adapter.notifyDataSetChanged();}
}

4 更新数据

 upd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {String uname=name.getText().toString();int uage=Integer.parseInt(age.getText().toString());int uid=Integer.parseInt(id.getText().toString()); boolean result=mdq.updaData(uid, uname, uage);if(result){Toast.makeText(getApplicationContext(),"Data has updated", Toast.LENGTH_LONG).show();}else{Toast.makeText(getApplicationContext(),"nuknown Data", Toast.LENGTH_LONG).show();}}});

5 查一条数据

select.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {int uid=Integer.parseInt(id.getText().toString()); String re=  mdq.querData(uid);if(re!=null){result.setText(re);}else{Toast.makeText(getApplicationContext(),"nuknown Data", Toast.LENGTH_LONG).show();}}});

6 删除数据

 del.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {int eid=Integer.parseInt(id.getText().toString());boolean result=mdq.deletData(eid);if(result){Toast.makeText(getApplicationContext(),"Data has delete", Toast.LENGTH_LONG).show();}else{Toast.makeText(getApplicationContext(),"nuknown Data", Toast.LENGTH_LONG).show();}      }});

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

  1. Android 数据库增删改查

    文章目录 一.案例演示 二.实现步骤 1.activity_main.xml 2.MainActivity.java 3.UserDao.java 4.User.java 5.SQLiteOpenHe ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 网络信息安全之防火墙的设计 (三)
  2. Python的subprocess子进程和管道进行交互
  3. oracle for dotnet
  4. python项目之古诗文网
  5. linux中的基础正则表达式
  6. Shell脚本8种字符串截取方法总结
  7. 吴军-《智能时代》-简介
  8. [转载] Python十大装B语法
  9. vim java.dict_配置 VIM 英语字典
  10. Json笔记-高德地铁数据分析
  11. 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
  12. Tesseract调用日文识别模型
  13. 胧月初音未来计算机,胧月(流星P所作歌曲《胧月》)_百度百科
  14. 原生JS实现登录框邮箱提示
  15. 全球十大咨询公司比较
  16. IOS 苹果手机 使用重力加速度,js web devicemotion,deviceorientation事件
  17. 在android移动终端运行android应用程序
  18. 浪潮云服务器安装win7系统,WIN7旗舰版操作系统中浪潮ERP_GS5.2安装说明.doc
  19. 恒指赵鑫:07.09今日实盘喊单记录与小结
  20. 我的世界Java版最诡异的种子_我的世界:比666还诡异的故障种子,无限复制结构?官方:还是特性...

热门文章

  1. 2021年9月份最新数据库排行榜出炉
  2. 实施Scrum敏捷开发的关键要素
  3. 程序员保护眼睛几种方法
  4. Astah professional 7.2
  5. 欺骗的艺术from凯文•米特尼克
  6. Fastjson源码阅读:缺陷静态检查(上)
  7. Android:获取并制作矢量图动画
  8. oracle 体系架构图
  9. 路由器04--OPKG
  10. java 给pdf加水印