• AsyncTask 异步任务 的用法(并且使用ORMlite关系数据库);


     1 package com.lixu.asynctask;
     2 
     3 import com.j256.ormlite.field.DatabaseField;
     4 import com.j256.ormlite.table.DatabaseTable;
     5 
     6 @DatabaseTable(tableName = "users")
     7 public class User {
     8     public User() {
     9 
    10     }
    11 
    12 
    13     
    14 
    15     @Override
    16     public String toString() {
    17         return "id" + user_id + "," + ",姓名:" + name + ",年龄:" + age + ",性别:" + sex+",班级是:"+aclass;
    18     }
    19 
    20     
    21 
    22 
    23     public int getUser_id() {
    24         return user_id;
    25     }
    26 
    27     public void setUser_id(int user_id) {
    28         this.user_id = user_id;
    29     }
    30 
    31     public String getName() {
    32         return name;
    33     }
    34 
    35     public void setName(String name) {
    36         this.name = name;
    37     }
    38 
    39     public int getAge() {
    40         return age;
    41     }
    42 
    43     public void setAge(int age) {
    44         this.age = age;
    45     }
    46 
    47     public String getSex() {
    48         return sex;
    49     }
    50 
    51     public void setSex(String sex) {
    52         this.sex = sex;
    53     }
    54 
    55     public AClass getAclass() {
    56         return aclass;
    57     }
    58 
    59     public void setAclass(AClass aclass) {
    60         this.aclass = aclass;
    61     }
    62 
    63     public User(int user_id, String name, int age, String sex, AClass aclass) {
    64         super();
    65         this.user_id = user_id;
    66         this.name = name;
    67         this.age = age;
    68         this.sex = sex;
    69         this.aclass = aclass;
    70     }
    71 
    72 
    73  
    74     @DatabaseField(id=true,columnName = "user_id")
    75     public int user_id;
    76 
    77     @DatabaseField(columnName = "name")
    78     public String name;
    79 
    80     @DatabaseField(columnName = "age")
    81     public int age;
    82     @DatabaseField(columnName = "sex")
    83     public String sex;
    84     @DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true)
    85     public AClass aclass;
    86 
    87 }
     1 package com.lixu.asynctask;
     2 
     3 import com.j256.ormlite.dao.ForeignCollection;
     4 import com.j256.ormlite.field.DataType;
     5 import com.j256.ormlite.field.DatabaseField;
     6 import com.j256.ormlite.field.ForeignCollectionField;
     7 import com.j256.ormlite.table.DatabaseTable;
     8 
     9 @DatabaseTable(tableName = "classes")
    10 public class AClass {
    11 
    12     public AClass(long id, String name, ForeignCollection<User> user) {
    13         super();
    14         this.id = id;
    15         this.name = name;
    16         this.user = user;
    17     }
    18 
    19     @Override
    20     public String toString() {
    21         return "id" + id + "班级名:" + name;
    22     }
    23 
    24     public long getId() {
    25         return id;
    26     }
    27 
    28     public void setId(long id) {
    29         this.id = id;
    30     }
    31 
    32     public String getName() {
    33         return name;
    34     }
    35 
    36     public void setName(String name) {
    37         this.name = name;
    38     }
    39 
    40     public ForeignCollection<User> getUser() {
    41         return user;
    42     }
    43 
    44     public void setUser(ForeignCollection<User> user) {
    45         this.user = user;
    46     }
    47 
    48     @DatabaseField(id = true)
    49     public long id;
    50 
    51     @DatabaseField(dataType = DataType.STRING)
    52     public String name;
    53 
    54     @ForeignCollectionField(eager = false)
    55     public ForeignCollection<User> user = null;
    56 
    57     public AClass() {
    58 
    59     }
    60 
    61 }
     1 package com.lixu.asynctask;
     2 
     3 import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
     4 import com.j256.ormlite.dao.Dao;
     5 import com.j256.ormlite.support.ConnectionSource;
     6 import com.j256.ormlite.table.TableUtils;
     7 import android.content.Context;
     8 import android.database.sqlite.SQLiteDatabase;
     9 import android.database.sqlite.SQLiteDatabase.CursorFactory;
    10 import android.util.Log;
    11 
    12 public class MyORMlite extends OrmLiteSqliteOpenHelper {
    13     private static String DATABASENAME = "lixu.db";
    14     private static int DATABASEVERSION = 1;
    15 
    16     private static MyORMlite mMyORMlite = null;
    17     private Dao<User, Integer> muserDao = null;
    18     private Dao<AClass, Integer> mclassDao = null;
    19 
    20     public MyORMlite(Context context, String databaseName, CursorFactory factory, int databaseVersion) {
    21         super(context, databaseName, factory, databaseVersion);
    22     }
    23 
    24     public static MyORMlite getInstance(Context context) {
    25         if (mMyORMlite == null) {
    26             mMyORMlite = new MyORMlite(context, DATABASENAME, null, DATABASEVERSION);
    27         }
    28         return mMyORMlite;
    29 
    30     }
    31 
    32     @Override
    33     public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
    34 
    35         try {
    36             TableUtils.createTableIfNotExists(arg1, User.class);
    37             TableUtils.createTableIfNotExists(arg1, AClass.class);
    38             Log.d("MyORMlite", "被创建");
    39         } catch (Exception e) {
    40             e.printStackTrace();
    41         }
    42     }
    43 
    44     public Dao<User, Integer> getuserDao() {
    45         if (muserDao == null) {
    46             try {
    47                 muserDao = getDao(User.class);
    48             } catch (Exception e) {
    49                 e.printStackTrace();
    50             }
    51         }
    52         return muserDao;
    53     }
    54 
    55     public Dao<AClass, Integer> getclassDao() {
    56         if (mclassDao == null) {
    57             try {
    58                 mclassDao = getDao(AClass.class);
    59             } catch (Exception e) {
    60                 e.printStackTrace();
    61             }
    62         }
    63         return mclassDao;
    64     }
    65 
    66     @Override
    67     public void close() {
    68         super.close();
    69         muserDao = null;
    70         mclassDao = null;
    71         
    72     }
    73 
    74     @Override
    75     public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2, int arg3) {
    76 
    77     }
    78 
    79 }
      1 package com.lixu.asynctask;
      2 
      3 import java.sql.SQLException;
      4 import java.util.List;
      5 
      6 import com.j256.ormlite.dao.Dao;
      7 import com.lixu.asynctask.AClass;
      8 import com.lixu.asynctask.User;
      9 import com.lixu.asynctask.MyORMlite;
     10 
     11 import android.app.Activity;
     12 import android.os.AsyncTask;
     13 import android.os.Bundle;
     14 import android.text.method.ScrollingMovementMethod;
     15 import android.view.View;
     16 import android.view.View.OnClickListener;
     17 import android.widget.Button;
     18 import android.widget.TextView;
     19 import android.widget.Toast;
     20 
     21 public class MainActivity extends Activity {
     22     private Dao<User, Integer> muserDao = null;
     23     private Dao<AClass, Integer> mclassDao = null;
     24     TextView tv;
     25     StringBuffer sb = null;
     26 
     27     @Override
     28     protected void onCreate(Bundle savedInstanceState) {
     29         super.onCreate(savedInstanceState);
     30         setContentView(R.layout.activity_main);
     31 
     32         MyORMlite mMyORMlite = MyORMlite.getInstance(this);
     33         muserDao = mMyORMlite.getuserDao();
     34         mclassDao = mMyORMlite.getclassDao();
     35 
     36         tv = (TextView) findViewById(R.id.tv);
     37         tv.setMovementMethod(ScrollingMovementMethod.getInstance());
     38 
     39         Button btn = (Button) findViewById(R.id.button1);
     40         btn.setOnClickListener(new OnClickListener() {
     41             @Override
     42             public void onClick(View v) {
     43                 MyTask mMyTask = new MyTask();
     44                 mMyTask.execute();
     45             }
     46         });
     47     }
     48 
     49     // 用一个类继承AsyncTask
     50     private class MyTask extends AsyncTask {
     51         // 先执行这个方法 可以处理一些初始化的事件等。
     52         @Override
     53         protected void onPreExecute() {
     54             sb = new StringBuffer();
     55             super.onPreExecute();
     56         }
     57 
     58         // 这个方法可以处理相对耗时较长的任务,这个方法里面不可以执行ui任务。
     59         @Override
     60         protected Object doInBackground(Object... params) {
     61             add();
     62             List<User> list = chaxun();
     63             for (User n : list) {
     64                 sb.append("姓名是:" + n.getName() + ",性别是:" + n.getSex() + ",班级是:" + n.getAclass().getName() + "
    ");
     65             }
     66             return sb;
     67         }
     68 
     69         // 可以将上一个方法处理的结果传到这个方法中,并且这个方法里面可以处理ui任务。
     70         @Override
     71         protected void onPostExecute(Object params) {
     72             super.onPostExecute(params);
     73             tv.setText(params.toString());
     74             Toast.makeText(MainActivity.this, "显示成功", 0).show();
     75         }
     76     }
     77 
     78     public List<User> chaxun() {
     79         List<User> list = null;
     80         try {
     81             list = muserDao.queryForAll();
     82 
     83         } catch (SQLException e) {
     84             e.printStackTrace();
     85         }
     86         return list;
     87 
     88     }
     89 
     90     public void add() {
     91 
     92         for (int j = 1; j <= 3; j++) {
     93             AClass classes = null;
     94             classes = new AClass();
     95             classes.setName("大三" + j + "班");
     96             classes.setId(j);
     97             try {
     98                 mclassDao.createIfNotExists(classes);
     99             } catch (SQLException e) {
    100                 e.printStackTrace();
    101             }
    102             for (int i = 10 * (j - 1) + 1; i <= 10 * j; i++) {
    103                 User user = new User();
    104                 user.setName("张三" + i);
    105                 user.setAge(20 + i);
    106                 user.setUser_id(i);
    107                 user.setSex("男");
    108                 user.setAclass(classes);// 挂载到class
    109                 try {
    110                     muserDao.createIfNotExists(user);
    111                 } catch (SQLException e) {
    112                     e.printStackTrace();
    113                 }
    114 
    115             }
    116         }
    117 
    118     }
    119 }
  • 相关阅读:
    使用pyppeteer 下载chromium 报错 或速度慢
    Splash抓取jd
    Splash抓取javaScript动态渲染页面
    Django3+websocket+paramiko实现web页面实时输出
    django3 websockets
    MySQL数据库OLTP基准测试( sysbench)
    数据库链接池大小设置和相关测试
    Linux 性能调优IO篇:工具命令篇
    Linux 性能调优内存篇:工具命令篇
    Vue笔记:vue项目引入bootstrap、elementUI、echarts
  • 原文地址:https://www.cnblogs.com/labixiaoxin/p/4959727.html
Copyright © 2020-2023  润新知