zoukankan      html  css  js  c++  java
  • android ORMlite的应用

      ORMLite -轻量级的对象关系映射(ORM)

        如果你需要在android中使用ORMLite 你需要进入官方网站 http://ormlite.com/ 中下载

          

         下载了这两个包以后,你还需要在对应的项目中配置这两个包

      然后你就可以开始写你的数据库语句了!!!

      我们一步一步来建立一个简单的ORMLite的小例子

        我们要实现的也就是利用ORMLite来呈现一个列表集合

      先来看布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <ListView
            android:id="@+id/list_show_Person"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    
    </LinearLayout>

      既然是要操作数据库,那么就得创建数据库

    package com.example.learn_ormlite;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class SQLiteHelper extends SQLiteOpenHelper {
    
        private final static String DbName="test_Person.db";
        private static int version=1;
        public SQLiteHelper(Context context) {
            super(context, DbName, null, version);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
        String sql="create table person(id integer primary key autoincrement,name text)";
        db.execSQL(sql);
        ContentValues con=new ContentValues();
        con.put("name", "text1");
        db.insert("person",null,con);
        db.insert("person",null,con);
        db.insert("person",null,con);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
        }
    
    }

    然后我们来配置这次的主角,

    package com.example.learn_ormlite;
    
    import java.sql.SQLException;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
    import com.j256.ormlite.dao.Dao;
    import com.j256.ormlite.support.ConnectionSource;
    
    public class myORMLiteHelper extends OrmLiteSqliteOpenHelper {
    
    
        private final static String DbName="test_Person.db";
        private static int version=1;
        private  Dao<Person,Integer> person_db=null;
        public myORMLiteHelper(Context context) {
            super(context, DbName, null, version);
        }
    
        @Override
        public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
                
            
        }
        public  Dao<Person,Integer> getPerson()
        {
            if(person_db==null)
                try {
                    person_db=getDao(Person.class);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            return person_db;
        }
        @Override
        public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
                int arg3) {
        }
        @Override
        public void close() {
            if(person_db!=null)
                person_db=null;
            super.close();
        }
    
    }

    我们可以看到,上面用红色标记出来的,说明了ORMLite是自动去找到这个数据库的,也就是说用数据库名称和版本绑定数据库,

      但是现在我们只是告诉它我们要得到一个东西,但是怎么得到的规则还没有定下来,所有,我们还得还定义规则

      

    package com.example.learn_ormlite;
    
    import com.j256.ormlite.field.DatabaseField;
    import com.j256.ormlite.table.DatabaseTable;
    
    @DatabaseTable(tableName = "person")
    public class Person {
    
        @DatabaseField(id = true)
        private Integer id;
        @DatabaseField(columnName="name")
        private String name;
        public Person()
        {
        }
        public Person(String name)
        {
            this.name=name;
        }
        public void setUid(int uid) {
            this.id = uid;
        }
        public Integer getUid() {
            return id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return name;
        }
    }

    我们所使用的规则就是,在需要映射的字段上面添加一些属性,当然这些属性必须得和数据库里面的关系相对应,

    然后我们就可以使用这个表了

    package com.example.learn_ormlite;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import android.app.Activity;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    import com.j256.ormlite.dao.Dao;
    
    
    public class MainActivity extends Activity {
    
        private ListView listShow;
        private List<Person> Tperson=null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            SQLiteHelper sql=new SQLiteHelper(this);
            SQLiteDatabase  db= sql.getWritableDatabase();
            db.close();
            listShow=(ListView) findViewById(R.id.list_show_Person);
            myORMLiteHelper ml=new myORMLiteHelper(this);
            
            Dao<Person,Integer> db_person=  ml.getPerson();
            try {
                Tperson= db_person.queryForAll();
                listShow.setAdapter(new ArrayAdapter<Person>(MainActivity.this,android.R.layout.simple_list_item_1,Tperson){});
                
            } catch (SQLException e) {
                e.printStackTrace();
            }       
        }
    }
    Hold on, everything is possible.
  • 相关阅读:
    Linux centos7 安装 phpMyAdmin
    centos7安装显示中文
    js限制按钮每隔一段时间才能再次点击
    PHPMailer 发送邮件
    jquery click事件中的return false
    安装composer
    生成目录树查看目录结构
    VMware桥接模式下虚拟机ping主机不通
    编译U-Boot时command not found的解决方法
    强制删除文件(夹)的方法
  • 原文地址:https://www.cnblogs.com/student-note/p/6123429.html
Copyright © 2011-2022 走看看