• 关于安卓版的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     @Override
     18     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             @Override
     27             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                                     @Override
     40                                     public void onClick(DialogInterface arg0,
     41                                             int arg1) {
     42                                         classname = et.getText().toString();
     43                                         teachername = et2.getText().toString();
     44                                         if (null != classname
     45                                                 && null != teachername) {
     46                                             Cursor c = db
     47                                                     .rawQuery(
     48                                                             "select type,classroom from table1 where classname = ? and teacher = ? ",
     49                                                             new String[] {
     50                                                                     classname,
     51                                                                     teachername });
     52                                             LayoutInflater li = LayoutInflater
     53                                                     .from(MainActivity.this);
     54                                             View view = li.inflate(
     55                                                     R.layout.show, null);
     56                                             type = (TextView) view
     57                                                     .findViewById(R.id.type);
     58                                             classroom = (TextView) view
     59                                                     .findViewById(R.id.classroom);
     60                                             editclassroom = (Button) view
     61                                                     .findViewById(R.id.button1);
     62                                             del = (Button) view
     63                                                     .findViewById(R.id.button2);
     64                                             c.moveToNext();
     65                                             type.setText(c.getString(c
     66                                                     .getColumnIndex("type")));
     67                                             classroom.setText(c.getString(c
     68                                                     .getColumnIndex("classroom")));
     69 
     70                                             new AlertDialog.Builder(
     71                                                     MainActivity.this)
     72                                                     .setTitle("查询结果")
     73                                                     .setView(view)
     74                                                     .setPositiveButton("确定",
     75                                                             null).show();
     76                                             editclassroom
     77                                                     .setOnClickListener(new View.OnClickListener() {
     78 
     79                                                         @Override
     80                                                         public void onClick(
     81                                                                 View arg0) {
     82                                                             LayoutInflater li = LayoutInflater
     83                                                                     .from(MainActivity.this);
     84                                                             View editview = li
     85                                                                     .inflate(
     86                                                                             R.layout.editclassroom,
     87                                                                             null);
     88                                                             edclassroom = (EditText) editview
     89                                                                     .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卡后我们才能用这个程序进行增删改查的操作。

     


     

  • 相关阅读:
    Anagram
    HDU 1205 吃糖果(鸽巢原理)
    Codeforces 1243D 0-1 MST(补图的连通图数量)
    Codeforces 1243C Tile Painting(素数)
    Codeforces 1243B2 Character Swap (Hard Version)
    Codeforces 1243B1 Character Swap (Easy Version)
    Codeforces 1243A Maximum Square
    Codeforces 1272E Nearest Opposite Parity(BFS)
    Codeforces 1272D Remove One Element
    Codeforces 1272C Yet Another Broken Keyboard
  • 原文地址:https://www.cnblogs.com/hubaoyue/p/3760446.html
Copyright © 2020-2023  润新知