編輯:關於Android編程
上一篇介紹了如何建立類生成工程,現在介紹如何使用。
以下是ExampleDaoGenerator工程代碼,做了一些修改
/* * Copyright (C) 2011 Markus Junginger, greenrobot (http://greenrobot.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.greenrobot.daogenerator.gentest; import de.greenrobot.daogenerator.DaoGenerator; import de.greenrobot.daogenerator.Entity; import de.greenrobot.daogenerator.Property; import de.greenrobot.daogenerator.Schema; import de.greenrobot.daogenerator.ToMany; /** * Generates entities and DAOs for the example project DaoExample. * * Run it as a Java application (not Android). * * @author Markus */ public class ExampleDaoGenerator { public static void main(String[] args) throws Exception { //該方法第一個參數用來更新數據庫版本號,第二個參數為要生成的DAO類所在包路徑。 Schema schema = new Schema(1, "de.greenrobot.daoexample"); //然後進行建表 addNote(schema); //addCustomerOrder(schema); //設置要生成DAO文件的目標工程的項目路徑,其中src-gen這個目錄名需要在運行前手動創建,否則會報錯 new DaoGenerator().generateAll(schema, "../../HelloWorld/src-gen"); } private static void addNote(Schema schema) { /** * 在使用greenDAO時,一個實體類只能對應一個表,目前沒法做到一個表對應多個實體類,或者多個表共用一種對象類型。 * 後續的升級也不會針對這一點進行擴展。 * */ Entity note = schema.addEntity("Note");//創建表 //note.addIdProperty(); //增加ID列 note.addIdProperty().primaryKey().autoincrement();//設置一個自增長ID列為主鍵: note.addStringProperty("text").notNull();//創建非空的列 note.addStringProperty("comment").unique();//創建唯一的 //note.addDateProperty("date"); } private static void addCustomerOrder(Schema schema) { Entity customer = schema.addEntity("Customer"); customer.addIdProperty(); customer.addStringProperty("name").notNull(); Entity order = schema.addEntity("Order"); order.setTableName("ORDERS"); // "ORDER" is a reserved keyword order.addIdProperty(); Property orderDate = order.addDateProperty("date").getProperty(); Property customerId = order.addLongProperty("customerId").notNull().getProperty(); order.addToOne(customer, customerId); ToMany customerToOrders = customer.addToMany(order, customerId); customerToOrders.setName("orders"); customerToOrders.orderAsc(orderDate); } }
上面代碼主要有兩個
Schema schema = new Schema(1, "de.greenrobot.daoexample");
第一個參數為版本號,第二個參數為產生的類放在引用工程的那個地方,需要結合下面代碼
new DaoGenerator().generateAll(schema, "../../HelloWorld/src-gen");
那麼產生的文件將放到
ExampleDaoGenerator工程目錄的上上兩級目錄下的 HelloWorld/src-gen/de/greenrobot/daoexample 目錄下。
1、我們在ExampleDaoGenerator工程下,按下鍵盤的 ctrl+F11 則會自動生成四個java類放到HelloWorld/src-gen/de/greenrobot/daoexample目錄下面
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+MqGisNHV4jS49sDg0sDAtbXEz+C52MDgt8W1vdK7xvCjrNLAwLW1xMDg1rG907DRIA=="greenDAO-master\DaoCore\src\de"目錄下的內容放到一起4個類一起。
3、將src-gen目錄設置為編譯文件夾
4、根據生成類增加相關代碼,這裡只貼相關用到的代碼
private DaoMaster daoMaster; private DaoSession daoSession; private NoteDao noteDao; private Cursor cursor; private SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DevOpenHelper helper = new DaoMaster.DevOpenHelper(MainActivity.this, "Note", null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao(); }
final Button btn6 = (Button) findViewById(R.id.button6); btn6.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(MainActivity.this, "長度 :" + noteDao.count(), Toast.LENGTH_SHORT).show(); Note note = new Note(null, "noteText1", "comment1"); try { noteDao.insert(note); } catch (Exception e) { Toast.makeText(MainActivity.this, "數據重復 :" + noteDao.count(), Toast.LENGTH_SHORT).show(); }
5、按ctrl+shift+o自動補齊相關類
6、下載APK到手機,即可。
補充:
在調試過程中,修改了生成工程的類之後發現,重新編譯helloworld工程有出現代碼異常的情況 代碼位於"db = helper.getWritableDatabase();"
該問題暫時未知道什麼原因。但有方法解決:在手機端-->在設置界面-->選擇對應的應用(對於我來說,是helloworld這個應用)-->清除數據
上一篇文章中我們講解了android中內存對象的序列化方式。由於android開發涉及到不同Activity的數據傳遞,對於基本數據類型數據的傳遞是沒有問題的,但是一旦涉
從事Android開發,免不了會在應用裡嵌入一些廣告SDK,在嵌入了眾多SDK後,發現幾乎每個要求在AndroidManifest.xml申明Activity的廣告SDK
Android 仿微信 圖片選擇器采用項目的框架上采用mvp模式,並用了我自己寫的一套lib,地址ndileber首先先定義了數據源,數據源可能來自於網絡也可能來自於本地
(一)概述(二)常用屬性與基礎實例從官方的API我們可以看到這樣一個類的關系圖:常用屬性詳解 :對應在java我們可以調用下述方法:先看看系統給我們提供的進度條吧運行效果