当前位置: 首页 > 编程日记 > 正文

关于安卓版的eclipse连接数据库并誓言增删改查

    在安卓环境下连接数据库下面是主要代码极其作用:

1.编写 The Class类把课程表courses.db当做一个实体类,hashcode和equals这两个类是为了判断输入的查询内容和Excel表中的内容是否一致。

并在java里面区别两个对象是否一致

复制代码
 1 public class TheClass {2     private String classname;3     private String type;4     private String teacher;5     private String classroom;6     public String getClassname() {7         return classname;8     }9     public void setClassname(String classname) {
10         this.classname = classname;
11     }
12     public String getType() {
13         return type;
14     }
15     public void setType(String type) {
16         this.type = type;
17     }
18     public String getTeacher() {
19         return teacher;
20     }
21     public void setTeacher(String teacher) {
22         this.teacher = teacher;
23     }
24     public String getClassroom() {
25         return classroom;
26     }
27     public void setClassroom(String classroom) {
28         this.classroom = classroom;
29     }
30     @Override
31     public int hashCode() {
32         final int prime = 31;
33         int result = 1;
34         result = prime * result
35                 + ((classname == null) ? 0 : classname.hashCode());
36         result = prime * result
37                 + ((classroom == null) ? 0 : classroom.hashCode());
38         result = prime * result + ((teacher == null) ? 0 : teacher.hashCode());
39         result = prime * result + ((type == null) ? 0 : type.hashCode());
40         return result;
41     }
42     @Override
43     public boolean equals(Object obj) {
44         if (this == obj)
45             return true;
46         if (obj == null)
47             return false;
48         if (getClass() != obj.getClass())
49             return false;
50         TheClass other = (TheClass) obj;
51         if (classname == null) {
52             if (other.classname != null)
53                 return false;
54         } else if (!classname.equals(other.classname))
55             return false;
56         if (classroom == null) {
57             if (other.classroom != null)
58                 return false;
59         } else if (!classroom.equals(other.classroom))
60             return false;
61         if (teacher == null) {
62             if (other.teacher != null)
63                 return false;
64         } else if (!teacher.equals(other.teacher))
65             return false;
66         if (type == null) {
67             if (other.type != null)
68                 return false;
69         } else if (!type.equals(other.type))
70             return false;
71         return true;
72     }
73     
74 }
复制代码

这里必须注意的是hashset是个集合,必须两者是不同的,那么怎么进行区分呢,就是通过hashcode和equals这两个类

2.编写Readfile类,导入Excle的类进入sqlite

复制代码
 1 public class ReadFile {2 3     public static boolean read2DB(File f, Context con) {4         try {5             Workbook course = null;6             course = Workbook.getWorkbook(f);7             Sheet sheet = course.getSheet(0);8             HashSet<TheClass> subjects = new HashSet<TheClass>();9             Cell cell = null;
10             for (int i = 1; i < sheet.getRows(); i++) {
11                 TheClass tc = new TheClass();
12                 cell = sheet.getCell(2, i);
13                 tc.setClassname(cell.getContents());
14                 cell = sheet.getCell(10, i);
15                 tc.setType(cell.getContents());
16                 cell = sheet.getCell(12, i);
17                 tc.setTeacher(cell.getContents());
18                 cell = sheet.getCell(18, i);
19                 tc.setClassroom(cell.getContents());
20                 System.out.println(tc.getClassname() + tc.getType()
21                         + tc.getTeacher() + tc.getClassroom());
22                 subjects.add(tc);
23             }
24             SQLiteDatabase db = new SQLiteHelper(con, "courses.db")
25                     .getWritableDatabase();
26             for (TheClass tc : subjects) {
27                 ContentValues cv = new ContentValues();
28                 cv.put("classname", tc.getClassname());
29                 cv.put("type", tc.getType());
30                 cv.put("teacher", tc.getTeacher());
31                 cv.put("classroom", tc.getClassroom());
32                 db.insert("table1", null, cv);
33             }
34             return true;
35         } catch (Exception e) {
36             // TODO Auto-generated catch block
37             e.printStackTrace();
38             return false;
39         }
40     }
41 }
复制代码

3.编写sqlite帮助类,通过它可以比较快的创建数据对象,创建表,删除表

复制代码
 1 public class SQLiteHelper extends SQLiteOpenHelper {2 3     public SQLiteHelper(Context context, String name, CursorFactory factory,4             int version) {5         super(context, name, factory, version);6     }7     public SQLiteHelper(Context con, String name){8         this(con, name, null, 1);9     }
10     
11     @Override
12     public void onCreate(SQLiteDatabase db) {
13         // TODO Auto-generated method stub
14         db.execSQL("create table table1(classname varchar(20), type varchar(10), teacher varchar(20), classroom varchar(20))");
15     }
16 
17     @Override
18     public void onUpgrade(SQLiteDatabase db, int oldv, int newv) {
19         // TODO Auto-generated method stub
20         db.execSQL("drop table if exists table1");
21         onCreate(db);
22     }
23 
24 }
复制代码

4.编写主函数MainActivity,添加查询课程,老师,修改教室,老师等点击事件,还有刚开始加载Excel表的数据


复制代码
  1 public class MainActivity extends Activity {2 3     private TextView hello;4     private Button b1;5     private EditText et;6     // private Spinner sp;7     private EditText et2;8     private SQLiteDatabase db = null;9     private TextView type;10     private TextView classroom;11     private Button editclassroom;12     private Button del;13     private String classname;14     private String teachername;15     private EditText edclassroom;16 17     @Override18     protected void onCreate(Bundle savedInstanceState) {19         super.onCreate(savedInstanceState);20         setContentView(R.layout.activity_main);21         db = new SQLiteHelper(this, "courses.db").getWritableDatabase();22         hello = (TextView) findViewById(R.id.hello);23         b1 = (Button) findViewById(R.id.button1);24         b1.setOnClickListener(new View.OnClickListener() {25 26             @Override27             public void onClick(View arg0) {28                 LayoutInflater li = LayoutInflater.from(MainActivity.this);29                 View view = li.inflate(R.layout.quer, null);30                 et = (EditText) view.findViewById(R.id.editText1);31                 // sp = (Spinner) findViewById(R.id.spinner1);32                 et2 = (EditText) view.findViewById(R.id.EditText01);33                 new AlertDialog.Builder(MainActivity.this)34                         .setTitle("查询")35                         .setView(view)36                         .setPositiveButton("确定",37                                 new DialogInterface.OnClickListener() {38 39                                     @Override40                                     public void onClick(DialogInterface arg0,41                                             int arg1) {42                                         classname = et.getText().toString();43                                         teachername = et2.getText().toString();44                                         if (null != classname45                                                 && null != teachername) {46                                             Cursor c = db47                                                     .rawQuery(48                                                             "select type,classroom from table1 where classname = ? and teacher = ? ",49                                                             new String[] {50                                                                     classname,51                                                                     teachername });52                                             LayoutInflater li = LayoutInflater53                                                     .from(MainActivity.this);54                                             View view = li.inflate(55                                                     R.layout.show, null);56                                             type = (TextView) view57                                                     .findViewById(R.id.type);58                                             classroom = (TextView) view59                                                     .findViewById(R.id.classroom);60                                             editclassroom = (Button) view61                                                     .findViewById(R.id.button1);62                                             del = (Button) view63                                                     .findViewById(R.id.button2);64                                             c.moveToNext();65                                             type.setText(c.getString(c66                                                     .getColumnIndex("type")));67                                             classroom.setText(c.getString(c68                                                     .getColumnIndex("classroom")));69 70                                             new AlertDialog.Builder(71                                                     MainActivity.this)72                                                     .setTitle("查询结果")73                                                     .setView(view)74                                                     .setPositiveButton("确定",75                                                             null).show();76                                             editclassroom77                                                     .setOnClickListener(new View.OnClickListener() {78 79                                                         @Override80                                                         public void onClick(81                                                                 View arg0) {82                                                             LayoutInflater li = LayoutInflater83                                                                     .from(MainActivity.this);84                                                             View editview = li85                                                                     .inflate(86                                                                             R.layout.editclassroom,87                                                                             null);88                                                             edclassroom = (EditText) editview89                                                                     .findViewById(R.id.editText1);90                                                             new AlertDialog.Builder(91                                                                     MainActivity.this)92                                                                     .setTitle(93                                                                             "新的教室:")94                                                                     .setView(95                                                                             editview)96                                                                     .setPositiveButton(97                                                                             "确定",98                                                                             new DialogInterface.OnClickListener() {99                                                                                 
100                                                                                 @Override
101                                                                                 public void onClick(DialogInterface arg0, int arg1) {
102                                                                                     ContentValues cv = new ContentValues();
103                                                                                     cv.put("classroom", edclassroom.getText().toString());
104                                                                                     db.update("table1", cv, "classname = ? and teacher = ?",
105                                                                                     new String[] {
106                                                                                             classname,
107                                                                                             teachername });
108                                                                                 }
109                                                                             })
110                                                                     .setNegativeButton(
111                                                                             "取消",
112                                                                             null)
113                                                                     .show();
114                                                         }
115                                                     });
116 
117                                             del.setOnClickListener(new View.OnClickListener() {
118 
119                                                 @Override
120                                                 public void onClick(View arg0) {
121                                                     new AlertDialog.Builder(
122                                                             MainActivity.this)
123                                                             .setTitle("警告")
124                                                             .setMessage(
125                                                                     "您正在删除记录,确定删除?")
126                                                             .setPositiveButton(
127                                                                     "确定",
128                                                                     new DialogInterface.OnClickListener() {
129 
130                                                                         @Override
131                                                                         public void onClick(
132                                                                                 DialogInterface arg0,
133                                                                                 int arg1) {
134                                                                             db.delete(
135                                                                                     "table1",
136                                                                                     "classname = ? and teacher = ?",
137                                                                                     new String[] {
138                                                                                             classname,
139                                                                                             teachername });
140                                                                         }
141                                                                     })
142                                                             .setNegativeButton(
143                                                                     "取消", null)
144                                                             .show();
145                                                 }
146                                             });
147 
148                                         }
149                                     }
150 
151                                 }).show();
152             }
153         });
154         File sdpath = Environment.getExternalStorageDirectory();
155         File coursefile = new File(sdpath + File.separator + "courses.xls");
156         if (!coursefile.exists()) {
157             new AlertDialog.Builder(this).setTitle("错误").setMessage("未找到文件")
158                     .setPositiveButton("确定", null).show();
159             b1.setVisibility(View.INVISIBLE);
160         } else {
161             hello.setText("找到了文件!");
162             new Important().execute();
163             b1.setVisibility(View.VISIBLE);
164         }
165     }
166 
167     @Override
168     public boolean onCreateOptionsMenu(Menu menu) {
169         // Inflate the menu; this adds items to the action bar if it is present.
170         getMenuInflater().inflate(R.menu.main, menu);
171         return true;
172     }
173 
174     class Important extends AsyncTask<Integer, String, Boolean> {
175         private ProgressDialog pDialog = null;
176 
177         @Override
178         protected void onPreExecute() {
179             // TODO Auto-generated method stub
180             super.onPreExecute();
181             pDialog = new ProgressDialog(MainActivity.this);
182             pDialog.setMessage("正在导入课程,请稍候");
183             pDialog.setIndeterminate(false);
184             pDialog.setCancelable(true);
185             pDialog.show();
186         }
187 
188         @Override
189         protected void onPostExecute(Boolean imp) {
190             // TODO Auto-generated method stub
191             super.onPostExecute(imp);
192             pDialog.dismiss();
193             String result = "";
194             if (imp == true) {
195                 result = "读取成功!";
196             } else {
197                 result = "读取失败!";
198             }
199             new AlertDialog.Builder(MainActivity.this).setTitle("提示")
200                     .setMessage(result).setPositiveButton("确定", null).show();
201 
202         }
203 
204         @Override
205         protected void onProgressUpdate(String... values) {
206             // TODO Auto-generated method stub
207             super.onProgressUpdate(values);
208         }
209 
210         @Override
211         protected Boolean doInBackground(Integer... params) {
212             File sdpath = Environment.getExternalStorageDirectory();
213             File coursefile = new File(sdpath + File.separator + "courses.xls");
214             return ReadFile.read2DB(coursefile, MainActivity.this);
215         }
216     }
217 
218 }
复制代码

5.整个过程不是太难,不过要记得导入jxl.jar这个包,整体技术方面就是用到了安卓本身自带的Sqlite操作方法,还要注意必须把excel表导入虚拟器或实体机的id卡中,因为实在安卓环境下运行,所以一定会用到虚拟器或实体机,只有把excel导入id卡后我们才能用这个程序进行增删改查的操作。

 


转载于:https://www.cnblogs.com/hubaoyue/p/3760446.html

相关文章:

07-主队列和全局队列

GCD 会主动的提供一个队列供开发者使用。 主队列 系统提供的串行队列 是在主线程执行的队列&#xff0c;所以是串行的队列。任务一个个执行。 dispatch_get_main_queue() 全局队列 系统提供的并发队列 全局队列是所有应用程序都能够使用的并发队列&#xff0c;不需要手动的创…

Android逆向--如何调试smali代码?

最近在重整Android逆向分析环境&#xff0c;一切都在从零开始&#xff0c;做下记录&#xff0c;给大家分享。 本文介绍Android逆向中smali代码的调试及环境的准备。 事先准备如下工具&#xff1a; Android killer&#xff1a;反编译APK应用为smali源码的工具 Android studi…

python -socket -client

socket client 发起连接。 流程为&#xff1a; 创建接口 发起连接 创建接口参数同socket server相同 发起连接的函数为socket.connect(ip,port) 这个地方的ip与port为socket server端的ip和监听port。 代码示例&#xff1a; # -*- coding: utf-8 -*-This is a testing program …

mysql的binlog太多太大占用了空间的解决办法

现象&#xff1a;网站访问越来越慢&#xff0c;最后无法访问了&#xff0c;经过检查发现磁盘满了 分析过程及解决方案&#xff1a;通常出现这种问题都应该登录服务器检查磁盘、内存和进程使用的情况&#xff0c;通过top、df –h和free –m来检查&#xff0c;发现磁盘空间满了。…

08-dispatch_apply

1 dispatch_apply dispatch_apply 是按照指定的次数将指定的block 添加到指定的queue当中去。 可以用于快速的迭代 // 获取全局并发队列dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);// 迭代数组NSLog("begin");NSArra…

记一次知乎维权过程——严肃批评某非法引流商

“ 我的文章被人盗版了。” 首先请关注本号的云技术君的马甲赶快取关&#xff0c;这里不欢迎你&#xff0c;你如果再抄我的文章去干坏事&#xff0c;你全家得新冠肺炎。 文章被盗版&#xff0c;被洗稿&#xff0c;且用来给菠菜党引流&#xff0c;我很生气。 好了&#xff0c…

《代码大全2》读后感czz

经老师推荐&#xff0c;买了一本《代码大全2》&#xff0c;花了近3个月的时间看完了&#xff0c;看完后觉得还有很多值得回味的地方&#xff0c;而且每部分之后作者还推荐了不少经典书籍。所以&#xff0c;作个读书心得。全书的主题是软件构建&#xff0c;关于软件构建问题的方…

09-dispatch_source

dispatch_source 是BSD系内核惯有的kqueue的包装&#xff0c;kqueue 是XNU内核中发生各种事件时&#xff0c;在应用程序编程中执行处理的技术。 CPU 负荷非常小&#xff0c;尽量不占用资源。 dispatch_queue 和dispatch_source dispatch_source 是可以取消的&#xff0c;取…

如何获取boss直聘搜索牛人被屏蔽的姓名

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 玩玩boss直聘。”最近在用boss直聘&#xff0c;活跃度估计蛮高的。在使用牛人搜索的时候&#xff0c;却遇到了一个问题&#xff0c;就是搜出的牛人姓名是被屏蔽的&#xff0c;让我很是焦虑&#xff0c;虽然知道这种设计是直聘推广…

【Python之路】第二篇--初识Python

Python简介 Python可以应用于众多领域&#xff0c;如&#xff1a;数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python&#xff0c;如&#xff1a;Youtube、Dropbox、BT、Quora&#xff08;中国知乎&…

如何实现phpcms v9_4X版本tag的伪静态?

这两个月来写的文章越来越少了&#xff0c;不是懒&#xff0c;因为太忙了--为客户赶做网站。因为客户指定要使用phpcms v9,还要求使用phpcms v9_42版本实现tag伪静态&#xff0c;在接手的时候phpcms v9_42是最新版本&#xff0c;而现在phpcms官方已经发布phpcms v9_5.X了。对于…

OC对象内存布局

OC对象的内存布局 1 每一个实例对象&#xff08;Instance&#xff09;内部都有一个isa指针&#xff0c;指向它的类对象&#xff0c;类对象存放着本对象的实例方法列表和成员变量列表。 2 类对象(Class)内部也有一个isa指针指向元类对象(MetaClass)&#xff0c;元类对象存放的事…

连信的protobuf数据格式

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 连信里用到的protobuf结构。”在看本文之前&#xff0c;可以先进行一下回顾&#xff0c;之前已经对协议的框架进行了整体的介绍&#xff1a;连信协议整体框架看了后结合自己的分析过程&#xff0c;应该有个初步的了解。后续会陆续…

fileupload控件在ajax中无法使用

google得到的方法&#xff1a;1。http://geekswithblogs.net/ranganh/archive/2008/04/01/file-upload-in-updatepanel-asp.net-ajax.aspxThere is a better way of doing it with Ajax Control Toolkit version 3.0.30930 which works with .NET 3.5 SP1 and Visual Studio 20…

Cron表达式的详细用法

字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年&#xff08;可选&#xff09; 留空, 1970-2099 , - * / 例子&#xff1a;0/5 * * * *…

01-CoreData 概述

CoreData 主要的几个类 1 概述 CoreData 是iOS 3 之后出现的一种数据持久化方案&#xff0c;提供了一种ORM的存储关系&#xff0c;CoreData 是直接将对象存储到数据库中去&#xff0c;也可以将数据库中的数据转化为OC对象&#xff0c;过程中不用编写SQL语句。 2 几个类的讲解…

连信的会话加密密钥协商过程

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍连信会话加密密钥的协商过程。” 公号内之前已经对协议的框架和协议内的数据格式进行了介绍&#xff0c;有需要可以回顾下&#xff1a; 连信协议整体框架 连信的protobuf数据格式 本文对连信的会话加密密钥协商过程进行介绍…

6、UmbracoNewsSite:添加新闻分类

上一篇做了一个简单的首页&#xff0c;在导航条上添加了几个新闻板块&#xff0c;接下来我们就添加这几个新闻板块的页面。 开始我们还是需要创建Document Types用来展示新闻列表。我们先做好规划&#xff0c;新闻列表只需要把新闻标题和图片展示出来就可以了&#xff0c;。  …

02-CoreData 的增删改查

CoreData 的增删改查 基本的增删改查的操作 1 数据库的创建 - (void)createDB {// 1.1 创建路径NSURL *modelURL [[NSBundle mainBundle] URLForResource:"AT_CoreDataDemo1" withExtension:"momd"];// 1.2 根据模型文件路径创建模型对象NSManagedObje…

Lemon开源OA

http://www.mossle.com/index.html 转载于:https://www.cnblogs.com/gzmg/p/3770882.html

UC浏览器代理流量解密

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 解密uc浏览器的安全代理流量&#xff0c;看看是不是真安全。”作为一个从上古网络时代过来的人&#xff0c;一定对UC浏览器有深刻印象&#xff0c;它的流量透明代理功能&#xff0c;就是现在的云加速功能&#xff0c;使用UC的服务…

JAVA07 接口与继承

一 动手实验&#xff1a;继承条件下的构造方法调用 1&#xff09;源代码 1 public class TestInherits {2 3 public static void main(String[] args) {4 // TODO Auto-generated method stub5 6 Child c new Child();7 }8 9 } 10 11 class GrandPa…

学习-现代交换原理与通信技术

帮助学习细化。。。 首先&#xff0c;这书真是难读&#xff0c;像个词典嘛似乎《现代交换原理与通信技术》卞佳丽 北邮 呵呵 呵了个呵 不过词典也有词典的好处 第三章&#xff0c;数字程控电话交换与通信网络 1. 控制子系统 与 话路子系统 前者在于控制&#xff0c;后者在于数…

03-NSPredicate谓词

NSPredicate 谓词 在查询数据的过程中&#xff0c;给NSFetchRequest设置一个过滤条件&#xff0c;不需要讲所有的托管对象加载到内存中去。这样的话就会节省内存和加快查找速度。 一 运算符 1 比较运算符 、< 、 、> 、< 、! 比如说age>80 NSPredicate *pre […

小兵别嚣张,签名算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“分析unity3d游戏小兵别嚣张的签名算法。”不久前&#xff0c;写了个unity3d的引子&#xff0c;介绍了使用工具从unity3d游戏中提取出各种资源和算法&#xff1a;unity3d游戏IL2CPP相关算法简单分析不过内容很少&#xff0c;今天介…

NOIP模拟题——B

【题目描述】我们要从n种食物选m个出来&#xff0c;安排一个顺序吃掉它&#xff08;们&#xff09;&#xff0c;每种食物有个美味值ai&#xff0c;然后我们有k个规则&#xff0c;每个规则有 xi, yi 和 ci三个数&#xff0c;如果吃完第xi种食物接下来马上吃第yi种食物&#xff0…

Maven使用常用命令

> mvn clean删除target文件夹> mvn clean test编译测试代码&#xff0c;默认被放到target/test-classes文件夹下面> mvn clean compile编译主代码&#xff0c;并放到target/classes文件夹下> mvn clean package打包代码&#xff0c;我们可以看到target文件下生成了…

04- CoreData轻量级版本的迁移

CoreData版本的迁移 一 轻量级的数据迁移 例如添加新的实体&#xff0c;新的实体属性。 轻量级版本迁移方案非常简单&#xff0c;大多数迁移工作都是由系统完成的&#xff0c;只需要告诉系统迁移方式即可。在持久化存储协调器(PSC)初始化对应的持久化存储(NSPersistentStore…

通da信TCP长连接数据算法分析

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析通da信TCP长连接内部分数据的算法。”作为一款老牌的炒股软件&#xff0c;通da信里面的数据是相当的丰富&#xff0c;免费的也很丰富&#xff0c;准确性也很好&#xff0c;例如&#xff0c;这种股票之间关联的信息。通da信一…

产品经理怎么样用图表传达数据信息(多图)

上文有点仓促了&#xff0c;结尾没有写好。补上&#xff1a; 对劣质成本分析的时候应该注意&#xff1a; 1、在进行劣质成本分析的时候&#xff0c;要注意区分成本和必要的浪费。要注意一个关系&#xff0c;对必要浪费的控制会导致其他成本的上升。例如前文说到四小时送一次货&…