Android高级-Android操作SQL数据管理,增删改查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android高级-Android操作SQL数据管理,增删改查相关的知识,希望对你有一定的参考价值。

 

  已经学了好几天SQL了,昨天刚接触到android操作SQL数据库,晚上老师留了一个作业,效果图如下

技术分享

技术分享技术分享技术分享

分别是,主界面,和修改,添加,以及删除界面

首先我们先来实现布局 MainActivity.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
 4     android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin"
 5 
 6     tools:context="wuxianedu.com.sqllistview.MainActivity">
 7 
 8     <ListView android:id="@+id/lv_liebiao"
 9         android:layout_width="match_parent"
10         android:layout_height="match_parent">
11     </ListView>
12 </RelativeLayout>

布局很简洁,只有一个ListView,

下面是List列表的item布局

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="horizontal" android:layout_width="match_parent"
 4     android:layout_height="match_parent">
 5     <LinearLayout   android:layout_width="0dp"
 6         android:layout_height="wrap_content"
 7         android:layout_weight="5">
 8     <TextView android:id="@+id/tv_name"
 9         android:layout_width="0dp" android:layout_gravity="center_vertical"
10         android:layout_height="wrap_content"
11         android:text="aaa" android:layout_weight="1"
12         android:gravity="center"/>
13 
14     <TextView android:id="@+id/tv_age"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content" android:layout_gravity="center_vertical"
17         android:text="aaa" android:layout_weight="1"
18         android:gravity="center"/>
19     <TextView android:id="@+id/tv_sex"
20         android:layout_width="wrap_content"
21         android:layout_height="wrap_content" android:layout_gravity="center_vertical"
22         android:text="aaa" android:layout_weight="1"
23         android:gravity="center"/>
24     </LinearLayout>
25     <Button android:id="@+id/but_name"
26         android:layout_width="0dp"
27         android:layout_height="wrap_content"
28         android:text="修改" android:layout_weight="1"
29         android:gravity="center"/>
30 
31     <Button android:id="@+id/but_delete"
32         android:layout_width="0dp"
33         android:layout_height="wrap_content"
34         android:text="删除" android:layout_weight="1"
35         android:gravity="center"/>
36 </LinearLayout>

之后是修改和添加界面的XML代码

UpdateActivity.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:orientation="vertical"
 6     android:layout_height="match_parent"
 7     android:paddingBottom="@dimen/activity_vertical_margin"
 8     android:paddingLeft="@dimen/activity_horizontal_margin"
 9     android:paddingRight="@dimen/activity_horizontal_margin"
10     android:paddingTop="@dimen/activity_vertical_margin"
11     tools:context="wuxianedu.com.sqllistview.UpdateActivity">
12 
13     <EditText android:id="@+id/ed_name"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:hint="请输入姓名"/>
17 
18     <EditText android:id="@+id/ed_age"
19         android:layout_width="match_parent"
20         android:layout_height="wrap_content"
21         android:hint="请输入年龄"
22         android:layout_below="@+id/ed_name"/>
23 
24     <EditText android:id="@+id/ed_sex"
25         android:layout_width="match_parent"
26         android:layout_height="wrap_content"
27         android:hint="请输入性别"
28         android:layout_below="@+id/ed_age"/>
29 
30     <Button android:id="@+id/but_queding"
31     android:layout_width="match_parent"
32     android:layout_height="wrap_content"
33     android:hint="修改用户"
34         android:layout_below="@+id/ed_sex"/>
35 
36     <Button android:id="@+id/but_tianjia"
37         android:layout_width="match_parent"
38         android:layout_height="wrap_content"
39         android:hint="添加用户"
40         android:layout_below="@+id/ed_sex"/>
41 
42 
43 </RelativeLayout >

  这里要说一下,添加数据和修改数据用的是一个布局,在JAva文件中通过判断来确定是修改还是添加,

  下面贴出JAVA代码

 

 1 package wuxianedu.com.sqllistview;
 2 
 3 import android.content.ContentValues;
 4 import android.content.Intent;
 5 import android.database.sqlite.SQLiteDatabase;
 6 import android.support.v7.app.AppCompatActivity;
 7 import android.os.Bundle;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 import android.widget.ListView;
11 
12 import java.util.List;
13 
14 import wuxianedu.com.sqllistview.DB.DBauxiliary;
15 
16 public class MainActivity extends AppCompatActivity {
17 
18     private MainAdapter mainAdapter;//构建数据源
19     private List list;//接收数据的LIST
20     private DBauxiliary db;//数据库操作类的实例
21 
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_main);
26         ListView listView = (ListView) findViewById(R.id.lv_liebiao);
27         db = DBauxiliary.getInstance(this);
28          list= db.select();
29         //构建数据源
30         mainAdapter = new MainAdapter(this,list);
31         //添加数据
32         listView.setAdapter(mainAdapter);
33     }
34     //Activity创建或者从被覆盖、后台重新回到前台时被调用  
35     @Override
36     protected void onResume() {
37         super.onResume();
38         //重新获取list数据
39         list = db.select();
40         //给list赋值 更新
41         mainAdapter.setList(list);
42     }
43 
44     @Override //菜单的点击事件
45     public boolean onCreateOptionsMenu(Menu menu) {
46         getMenuInflater().inflate(R.menu.menu,menu);
47         menu.findItem(R.id.add).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
48             @Override
49             public boolean onMenuItemClick(MenuItem item) {
50                 //点击添加跳转
51                 Intent intent=new  Intent(MainActivity.this,UpdateActivity.class);
52                 startActivityForResult(intent,5);
53                 return false;
54             }
55         });
56         return super.onCreateOptionsMenu(menu);
57 
58     }
59 }

 

MainAdapter.java
此文件用来填充Adapter数据

  1 package wuxianedu.com.sqllistview;
  2 
  3 import android.content.Context;
  4 import android.content.DialogInterface;
  5 import android.content.Intent;
  6 import android.support.v7.app.AlertDialog;
  7 import android.view.LayoutInflater;
  8 import android.view.View;
  9 import android.view.ViewGroup;
 10 import android.widget.BaseAdapter;
 11 import android.widget.Button;
 12 import android.widget.TextView;
 13 import android.widget.Toast;
 14 
 15 import java.util.List;
 16 
 17 import wuxianedu.com.sqllistview.DB.DBauxiliary;
 18 
 19 /**
 20  * Created by Administrator on 2016/9/20.
 21  */
 22 public class MainAdapter extends BaseAdapter {
 23     private Context context;
 24     private List<JavaBean> list;//接收数据的LIST
 25     private DBauxiliary db;//数据库操作类的实例
 26     //适配器
 27     public MainAdapter(Context context,List<JavaBean> list){
 28         this.context = context;
 29         this.list = list;
 30     }
 31     //更新集合用
 32     public void setList(List<JavaBean> list) {
 33         this.list = list;
 34         notifyDataSetChanged();
 35     }
 36 
 37     @Override
 38     public int getCount() {
 39         return list.size();
 40     }
 41 
 42     @Override
 43     public Object getItem(int position) {
 44         return list.get(position);
 45     }
 46 
 47     @Override
 48     public long getItemId(int position) {
 49         return position;
 50     }
 51 
 52     @Override
 53     public View getView(final int position, View convertView, ViewGroup parent) {
 54        final HUi hui;
 55         if(convertView == null){
 56             hui = new HUi();
 57             final int wo ;
 58             wo = position;
 59             db = DBauxiliary.getInstance(context);
 60             convertView = LayoutInflater.from(context).inflate(R.layout.item_lie, null);
 61             hui.name = (TextView) convertView.findViewById(R.id.tv_name);
 62             hui.age = (TextView) convertView.findViewById(R.id.tv_age);
 63             hui.sex = (TextView) convertView.findViewById(R.id.tv_sex);
 64             hui.update = (Button) convertView.findViewById(R.id.but_name);
 65             hui.delete = (Button) convertView.findViewById(R.id.but_delete);
 66 
 67             //
 68             //修改按钮
 69             hui.update.setOnClickListener(new View.OnClickListener() {
 70                 @Override
 71                 public void onClick(View v) {
 72                     Intent intent = new Intent(context,UpdateActivity.class);
 73                     int on = (int) hui.update.getTag();
 74                     JavaBean javabean = list.get(on);
 75                     intent.putExtra("name",javabean);
 76                     context.startActivity(intent);
 77 
 78                 }
 79             });
 80             convertView.setTag(hui);
 81         }else{
 82             hui = (HUi) convertView.getTag();
 83         }
 84 
 85         final JavaBean java = list.get(position);
 86         hui.update.setTag(position);
 87         hui.name.setText(java.getName());
 88         hui.age.setText(String.valueOf(java.getAge()));
 89         hui.sex.setText(java.getSex());
 90         final String naaa = java.getName();
 91         //构建删除对话框
 92         hui.delete.setOnClickListener(new View.OnClickListener() {
 93             @Override
 94             public void onClick(View v) {
 95                 AlertDialog.Builder builder = new  AlertDialog.Builder(context);
 96                 builder.setMessage("确定删除吗?");
 97                 builder.setPositiveButton("取消",null);
 98                 builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
 99                     @Override
100                     public void onClick(DialogInterface dialog, int which) {
101                         db.delete(naaa);
102                         list = db.select();
103                         setList(list);
104                         notifyDataSetChanged();
105                         Toast.makeText(context,"删除成功",Toast.LENGTH_SHORT).show();
106                     }
107                 }).show();
108 
109             }
110         });
111         return convertView;
112     }
113 
114     class HUi {
115         TextView name,age,sex;
116         Button update,delete;
117     }
118 }

 

UpdateActivity.java
用于添加和修改数据

 1 package wuxianedu.com.sqllistview;
 2 
 3 import android.content.ContentValues;
 4 import android.content.Intent;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 import android.widget.Toast;
11 
12 import wuxianedu.com.sqllistview.DB.DBauxiliary;
13 
14 public class UpdateActivity extends AppCompatActivity implements View.OnClickListener {
15 
16     private DBauxiliary db;
17     private EditText ed_name,ed_sex,ed_age;
18     private JavaBean com;
19     private Button xiugai,shanchu;
20 
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_update);
25         ed_name= (EditText) findViewById(R.id.ed_name);
26         ed_age = (EditText) findViewById(R.id.ed_age);
27         ed_sex = (EditText) findViewById(R.id.ed_sex);
28         xiugai = (Button) findViewById(R.id.but_tianjia);
29         shanchu = (Button) findViewById(R.id.but_queding);
30         Intent on = getIntent();
31          com = (JavaBean) on.getSerializableExtra("name");
32         if(com == null){
33             shanchu.setVisibility(View.GONE);
34         }else{
35             xiugai.setVisibility(View.GONE);
36             ed_name.setText(com.getName()+"");
37             ed_age.setText(String.valueOf(com.getAge())+"");
38             ed_sex.setText(com.getSex()+"");
39         }
40         db = DBauxiliary.getInstance(UpdateActivity.this);
41 /*        ed_name.setText(com.getName()+"");
42         ed_age.setText(String.valueOf(com.getAge())+"");
43         ed_sex.setText(com.getSex()+"");*/
44         xiugai.setOnClickListener(this);
45         shanchu.setOnClickListener(this);
46 
47     }
48     private void SqlInsert(){
49         ContentValues contentValues = new ContentValues();
50         contentValues.put("name",ed_name.getText().toString());
51         contentValues.put("age",ed_age.getText().toString());
52         contentValues.put("sex",ed_sex.getText().toString());
53         db.insert(contentValues);
54         Toast.makeText(UpdateActivity.this,"添加成功",Toast.LENGTH_SHORT).show();
55     }
56     //删除数据
57     private void SqlUpdate(){
58         ContentValues contentValues = new ContentValues();
59         contentValues.put("name",ed_name.getText().toString());
60         contentValues.put("age",ed_age.getText().toString());
61         contentValues.put("sex",ed_sex.getText().toString());
62         db.update(contentValues,com.getName());
63         Toast.makeText(UpdateActivity.this,"修改成功",Toast.LENGTH_SHORT).show();
64     }
65     //判断
66     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
67             if(requestCode != 5){
68 
69             }
70     }
71 
72     @Override
73     public void onClick(View v) {
74         switch (v.getId()){
75             case R.id.but_queding:
76                 SqlUpdate();
77                 break;
78             case R.id.but_tianjia:
79                 SqlInsert();
80                 break;
81         }
82     }
83 }

到这里所有功能就都写完了,我都写上注释了,如果有不明白的也可以留言,也可以加我Q,1171628833,本人刚安卓,小白一个,有同是小白的可以一起交流,共同成长,其他有一个Menu菜单,我没有写,因为不太明白,



 

以上是关于Android高级-Android操作SQL数据管理,增删改查的主要内容,如果未能解决你的问题,请参考以下文章

Android学习—— Android高级控件

Android全平台书籍

Android学习之基础知识十六 — Android开发高级技巧的掌握

Android手机的操作系统,能从低级版本刷到高级版本吗?

Android手机的操作系统,能从低级版本刷到高级版本吗?

Android高级UI进阶RecyclerView 刷新列表数据的 notifyDataSetChanged() 为什么是昂贵的?