Android数据库增删改查
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;}}
- 查询所有数据
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;}}
- 按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(""); }}}});
- 展示所有数据
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数据库增删改查相关推荐
- Android 数据库增删改查
文章目录 一.案例演示 二.实现步骤 1.activity_main.xml 2.MainActivity.java 3.UserDao.java 4.User.java 5.SQLiteOpenHe ...
- IntelliJ Idea SpringBoot 数据库增删改查实例
. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \\\\( ( )\___ | '_ | '_| | '_ \/ _` | \\\\ \\/ ___)| | ...
- android开发c s架构,【开源】基于C/S架构的Android员工增删改查客户端
背景:html 期末快到了,各门课的课程设计都要来临了,最近Java课的课程设计就在想着作什么好,因而想了下弄一个android的应用吧,因而便有下文了.java 刚入门android,技术很不过关, ...
- 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现
常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...
- Mysql (一)Mysql 数据库增删改查
mysql数据库增删改查增:create database DBname charset gbk; 删:drop database DBname; 改:alter database DBname ch ...
- sql增删改查_快速搞定数据库增删改查|附思维导图
数据库学习,增删改查一直是测试工程师面试笔试的必考知识点,对于常用sql语法我们一定要牢记于心,尤其是各种查询的用法,在面试的时候,一个小小的知识点,面试官都可以推断出求职者的基础是否扎实. 下面是关 ...
- Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...
- php+mysql+into_PHP+Mysql 如何实现数据库增删改查
PHP+Mysql实现数据库增删改查的方法:1.创建入口文件[index.html]连接数据库.查询数据:2.点击增加按钮,通过[addnews.html]添加数据:3.点击删除按钮,通过服务端文件[ ...
- Java连接Mysql数据库增删改查实现
Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...
- flask对mysql数据库增删改查_Flask学习(三) - Flask-SQLAlchemy对数据库增删改查
Flask-SQLAlchemy对数据库增删改查 安装 pip install flask-sqlalchemy 具体不多说了,主要是对数据库进行简单的增删改查,上代码,看注释 @app.route( ...
最新文章
- 网络信息安全之防火墙的设计 (三)
- Python的subprocess子进程和管道进行交互
- oracle for dotnet
- python项目之古诗文网
- linux中的基础正则表达式
- Shell脚本8种字符串截取方法总结
- 吴军-《智能时代》-简介
- [转载] Python十大装B语法
- vim java.dict_配置 VIM 英语字典
- Json笔记-高德地铁数据分析
- 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- Tesseract调用日文识别模型
- 胧月初音未来计算机,胧月(流星P所作歌曲《胧月》)_百度百科
- 原生JS实现登录框邮箱提示
- 全球十大咨询公司比较
- IOS 苹果手机 使用重力加速度,js web devicemotion,deviceorientation事件
- 在android移动终端运行android应用程序
- 浪潮云服务器安装win7系统,WIN7旗舰版操作系统中浪潮ERP_GS5.2安装说明.doc
- 恒指赵鑫:07.09今日实盘喊单记录与小结
- 我的世界Java版最诡异的种子_我的世界:比666还诡异的故障种子,无限复制结构?官方:还是特性...