- 浏览: 105551 次
- 性别:
- 来自: 温州
文章分类
最新评论
-
q316085319:
www.glmei.cn
android spinner修改 样式 -
q316085319:
www.glmei.cn
android spinner修改 样式 -
348724481:
ducp123 写道348725767 写道bailin_ys ...
achartengine动态加载数据 -
cnyangqi:
。。。我还以为是demo。。。
zTree拖拽效果 -
简屋_l:
请问下楼主怎么改变弹出窗口的整体背景色 不是item背景
android spinner修改 样式
ormlite的资料真少,网上很难找,就干脆自己看些api,以前以为这些api什马的很难,看下来之后觉得也不怎么困难。找了些操作数据库的类的用法,所以做了一个登录注册的小例子。
首先是登录相关的类
package com.cng; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.cng.dao.UsersDao; import com.cng.model.UsersEntity; import com.cng.utils.DataHelper; import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; import com.j256.ormlite.dao.Dao; import android.R.integer; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class OrmliteLoginDemoActivity extends OrmLiteBaseActivity<DataHelper> { private EditText username; private EditText password; private Button submit; private Button register; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); handlerbtn(); } public void initView() { username=(EditText)findViewById(R.id.username); password=(EditText)findViewById(R.id.password); submit=(Button)findViewById(R.id.submit); register=(Button)findViewById(R.id.register); } public void handlerbtn() { submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String usernameString=username.getText().toString(); String passwordString=password.getText().toString(); UsersDao usersDao=new UsersDao(); List<UsersEntity> userlist=new ArrayList<UsersEntity>(); try { Dao<UsersEntity, Integer> userDao=getHelper().getUserDataDao(); userlist=usersDao.findUser(userDao,usernameString, passwordString); } catch (SQLException e) { e.printStackTrace(); } if(userlist==null||userlist.size()<=0) { alert("用户名或密码错误"); } else { alert("欢迎登录"); Intent intent =new Intent(); intent.setClass(OrmliteLoginDemoActivity.this, welcom.class); startActivity(intent); } } }); register.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent =new Intent(); intent.setClass(OrmliteLoginDemoActivity.this, register.class); startActivity(intent); } }); } public void alert(String str) { Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); } }
然后是注册的
package com.cng; import java.sql.SQLException; import java.util.List; import com.cng.dao.UsersDao; import com.cng.model.UsersEntity; import com.cng.utils.DataHelper; import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; import com.j256.ormlite.dao.Dao; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class register extends OrmLiteBaseActivity<DataHelper> { private EditText register_username; private EditText register_password; private EditText register_repassword; private Button register_btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); initview(); handlerbtn(); } public void initview() { register_username=(EditText)findViewById(R.id.register_username); register_password=(EditText)findViewById(R.id.register_password); register_repassword=(EditText)findViewById(R.id.register_repassword); register_btn=(Button)findViewById(R.id.register_btn); } public void handlerbtn() { register_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String usernameString=register_username.getText().toString(); String passwordString=register_password.getText().toString(); String repasswordString=register_repassword.getText().toString(); if(usernameString.equals("")) { register_username.setError("请输入用户名"); return; } if(passwordString.equals("")) { register_password.setError("请输入密码"); return; } if(repasswordString.equals("")) { register_repassword.setError("请重复密码"); return; } if(!repasswordString.equals(passwordString)) { register_repassword.setError("重复密码与原密码不一致"); return; } UsersDao userDao=new UsersDao(); try { Dao<UsersEntity, Integer> userentitydao=getHelper().getUserDataDao(); List<UsersEntity> userlist=userDao.findUser(userentitydao, usernameString); if(userlist==null||userlist.size()<=0) { userDao.addsuer(userentitydao, usernameString, passwordString); alert("注册成功"); } else { alert("此账户已经被注册"); register_username.setText(""); } } catch (SQLException e) { e.printStackTrace(); } } }); } public void alert(String str) { Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); } }
最后欢迎界面
package com.cng; import android.app.Activity; import android.os.Bundle; public class welcom extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcom); } }
再是数据库映射的实体类
package com.cng.model; import java.io.Serializable; import com.j256.ormlite.field.DatabaseField; import android.R.integer; public class UsersEntity implements Serializable { private static final long serialVersionUID = -6582623980712135028L; @DatabaseField(generatedId=true) private int id; @DatabaseField private String username; @DatabaseField private String password; public UsersEntity(){} public UsersEntity(int id, String username, String password) { super(); this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public String getPassword() { return password; } public String getUsername() { return username; } public void setId(int id) { this.id = id; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } }
再是操作数据库的类,我按照mvc的模式把操作数据库的类单独分离开了
package com.cng.dao; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import com.cng.model.UsersEntity; import com.j256.ormlite.dao.Dao; public class UsersDao { public List<UsersEntity> findUser(Dao<UsersEntity, Integer> userdao,String username,String password) throws SQLException { Dao<UsersEntity, Integer> userDao = userdao; Map<String, Object> userMap=new HashMap<String, Object>(); userMap.put("username", username); userMap.put("password", password); List<UsersEntity> userlistEntities=userDao.queryForFieldValues(userMap); return userlistEntities==null?null:userlistEntities; } public List<UsersEntity> findUser(Dao<UsersEntity, Integer> userdao,String username) throws SQLException { Dao<UsersEntity, Integer> userDao = userdao; Map<String, Object> userMap=new HashMap<String, Object>(); userMap.put("username", username); List<UsersEntity> userlistEntities=userDao.queryForFieldValues(userMap); return userlistEntities==null?null:userlistEntities; } public void addsuer(Dao<UsersEntity, Integer> userdao,String username,String password) throws SQLException { Dao<UsersEntity, Integer> userDao = userdao; UsersEntity usersEntity=new UsersEntity(); usersEntity.setUsername(username); usersEntity.setPassword(password); userDao.create(usersEntity); } }
最后是数据库管理类
package com.cng.utils; import java.sql.SQLException; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.cng.model.UsersEntity; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; public class DataHelper extends OrmLiteSqliteOpenHelper { private static final String DATABASE_NAME = "OrmliteLoginDemo.db"; private static final int DATABASE_VERSION = 1; private Dao<UsersEntity, Integer> userDao = null; public DataHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, UsersEntity.class); } catch (SQLException e) { Log.e(DataHelper.class.getName(), "创建数据库失败", e); e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, int arg3) { try { TableUtils.dropTable(connectionSource, UsersEntity.class, true); onCreate(db, connectionSource); } catch (SQLException e) { Log.e(DataHelper.class.getName(), "更新数据库失败", e); e.printStackTrace(); } } @Override public void close() { super.close(); userDao = null; } public Dao<UsersEntity, Integer> getUserDataDao() throws SQLException { if (userDao == null) { userDao = getDao(UsersEntity.class); } return userDao; } }
布局代码如下
<?xml version="1.0" encoding="utf-8" ?> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> - <LinearLayout android:layout_marginTop="80dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" /> <EditText android:id="@+id/username" android:layout_marginLeft="10dp" android:layout_width="200dp" android:layout_height="wrap_content" android:hint="请输入用户名" /> </LinearLayout> - <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码 " /> <EditText android:id="@+id/password" android:layout_marginLeft="10dp" android:layout_width="200dp" android:layout_height="wrap_content" android:hint="请输入密码" /> </LinearLayout> - <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <Button android:id="@+id/submit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" /> <Button android:id="@+id/register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" /> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8" ?> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> - <LinearLayout android:layout_marginTop="80dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名 " /> <EditText android:id="@+id/register_username" android:layout_marginLeft="10dp" android:layout_width="200dp" android:layout_height="wrap_content" android:hint="请输入用户名" /> </LinearLayout> - <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码 " /> <EditText android:id="@+id/register_password" android:layout_marginLeft="10dp" android:layout_width="200dp" android:layout_height="wrap_content" android:hint="请输入密码" /> </LinearLayout> - <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="重复密码" /> <EditText android:id="@+id/register_repassword" android:layout_marginLeft="10dp" android:layout_width="200dp" android:layout_height="wrap_content" android:hint="重复密码" /> </LinearLayout> - <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <Button android:id="@+id/register_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" /> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8" ?> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="欢迎登录" /> </LinearLayout>
当然工程里要加入ormlite的基础类包。
这样基于ormlite的登录注册的小例子就完成了。
评论
5 楼
348725767
2012-07-20
squall.dai 写道
BTW 我很无聊……盯着看了很久……
ORMLite 封装的这个DAO其实已经蛮完备的了,你再加个Dao是会更细致一些。单独分离开的这个UserDao可以换个包换个名改成是service的层,其他的业务逻辑也可以封装进来。
而且如果你再分离个数据库操作的层出来,
应该输入输出的是object吧,最好不要是一个个参数一个个item的传入传出。
= =请问你觉得那些一大堆的findByxxxx()方法应该描述在分离的Dao中还是Service中?
ORMLite 封装的这个DAO其实已经蛮完备的了,你再加个Dao是会更细致一些。单独分离开的这个UserDao可以换个包换个名改成是service的层,其他的业务逻辑也可以封装进来。
而且如果你再分离个数据库操作的层出来,
应该输入输出的是object吧,最好不要是一个个参数一个个item的传入传出。
= =请问你觉得那些一大堆的findByxxxx()方法应该描述在分离的Dao中还是Service中?
额,在学ssh的时候,数据层操作都写在dao层的,也许是思维惯性吧。
4 楼
squall.dai
2012-07-19
BTW 我很无聊……盯着看了很久……
ORMLite 封装的这个DAO其实已经蛮完备的了,你再加个Dao是会更细致一些。单独分离开的这个UserDao可以换个包换个名改成是service的层,其他的业务逻辑也可以封装进来。
而且如果你再分离个数据库操作的层出来,
应该输入输出的是object吧,最好不要是一个个参数一个个item的传入传出。
= =请问你觉得那些一大堆的findByxxxx()方法应该描述在分离的Dao中还是Service中?
ORMLite 封装的这个DAO其实已经蛮完备的了,你再加个Dao是会更细致一些。单独分离开的这个UserDao可以换个包换个名改成是service的层,其他的业务逻辑也可以封装进来。
而且如果你再分离个数据库操作的层出来,
应该输入输出的是object吧,最好不要是一个个参数一个个item的传入传出。
= =请问你觉得那些一大堆的findByxxxx()方法应该描述在分离的Dao中还是Service中?
3 楼
squall.dai
2012-07-19
操作数据库的类,我按照mvc的模式把操作数据库的类单独分离开了
----操作数据库的类不是按MVC模式分出的,我觉得应该说是按N-LAYER的分层模式分出的Business Layer
----操作数据库的类不是按MVC模式分出的,我觉得应该说是按N-LAYER的分层模式分出的Business Layer
2 楼
348725767
2012-02-13
新建的OrmliteLoginDemo.db在data/data/包名 这路径下可以用exlipse将此文件导出。
1 楼
qzhai
2011-12-14
没有看到你的数据库,难道是用android内置的数据库,OrmliteLoginDemo.db这个是创建的数据库名称,如何可以使用SQLite expert查询到这个数据库的表数据呢
发表评论
-
新建heroku java服务端
2012-10-16 17:19 1469heroku就是你可以将项目托管至他们的服务器,然 ... -
照片涂涂涂源码
2012-04-17 19:18 1307最近整理了下自己做的小软件的源码。贡献给大家。 做的小软件的 ... -
照片涂鸦操作说明
2012-04-10 20:27 1476照片涂鸦 “照片涂涂涂”是一款对图片进行涂写的软件 ... -
开发了个安卓软件-照片涂鸦
2012-04-10 20:28 1429最近学习android开发的时候,觉得有必要做个小软件练练手, ... -
android 本地语音开发
2011-11-03 15:37 1564最近在做一个android 平台上的语音应用,android自 ... -
achartengine动态加载数据
2011-09-23 19:51 6248现在项目有个需求就是利用achartengine动态的加载数据 ... -
android orm映射框架 ormlite (类似于hibernate) 很强大
2011-08-30 21:56 7033初学android不久,由于我是以前学过j2ee,什么ssh曾 ... -
android自定义listview
2011-08-29 20:11 1897这是我从网上找的,稍做修改,分享下。 xml布局文件有 ... -
android top弹出框
2011-08-29 20:04 1598android top弹出框的实现原理:当要弹出菜单的时候将隐 ... -
android 实现3d旋转
2011-08-29 19:40 2020通过继承Animation动画类 封装了一个3d旋转的效果代 ... -
android封装的menu自定义菜单列表
2011-08-16 01:41 2122自己封装的menu自定义菜单列表,首先必须创建一个类继承act ... -
新收集的android的gallery 立体样式的
2011-08-16 01:25 2296新收集的android的gallery 立体样式的 -
android 绑定sqlite数据库与程序一起发布
2011-08-12 00:50 1617由于需求需要某程序一安装就得有几个数据 , 而现在的程序是 ... -
android 图表插件 achartengine
2011-08-09 00:40 1923android 比较实用的图表插件 可放大 缩小 功能 ... -
android spinner修改 样式
2011-08-09 00:30 25877做到一种样式 android 的spinner本身背景样式要 ... -
android自定义按钮控件样式
2011-08-09 00:03 2306android自定义控件其实就是定义一个xml按钮控件样式然后 ...
相关推荐
通过实践这个例子,开发者可以更深入地理解ORMLite如何简化Android上的数据库编程。然而,ORMLite还提供了更多高级特性,如自增主键、查询构建器、异步操作等,开发者可以根据实际需求进一步学习和探索。
ORMLite是一个轻量级的Java ORM库,它同样支持Android平台,使得我们可以用面向对象的方式进行数据库操作,避免了繁琐的SQL语句编写。本实例将深入探讨如何在Android项目中使用ORMLite实现多表关联操作。 首先,...
在这个"Android ORMLite小例子"中,我们将探讨如何在Android项目中使用ORMLite进行数据持久化。 首先,我们需要了解ORMLite的基本概念。ORMLite将Java对象映射到数据库表,这样我们就可以通过操作对象来完成数据库...
在"android ormlite 使用例子 学生信息管理"这个项目中,我们可以假设有一个`Student`类,代表学生信息表。`Student`类会包含如`id`(主键)、`name`、`age`、`classId`等字段,这些字段会自动映射到数据库表的相应...
在Android开发中,ORM(Object-Relational Mapping)框架如ORMLite被广泛用于简化数据库操作,使得开发者能够更方便地处理数据存储。ORMLite虽然功能强大,但默认并不直接支持联合主键,即由两个或多个字段共同构成...
本文将详细介绍如何在Android中使用ORM库ORMLite来实现数据持久化,特别是涉及到外键的使用。 首先,我们需要了解ORMLite是什么。ORMLite(Object Relational Mapping Lite)是一个轻量级的ORM库,它允许开发者将...
在"测试android下基于ormlite持久化数据库小例子"这个项目中,我们将学习如何配置ORMlite,创建数据表,以及执行基本的数据库操作。 首先,我们需要在Android项目中添加ORMlite库。可以通过Gradle依赖管理工具,在...
在Android开发中,ORM(Object-Relational Mapping)框架如ORMLite可以帮助开发者更方便地操作数据库,将数据对象与数据库表之间的映射关系自动化处理。ORMLite为Android提供了强大的支持,允许开发者以面向对象的...
ORMLite(Object-Relational Mapping Lite)是一个轻量级的ORM框架,它简化了Android与SQLite数据库之间的交互,让开发者无需直接编写SQL语句,而是通过Java对象进行操作。本文将详细介绍ORMLite的使用方法和核心...
本篇将详细讲解如何在Android上使用ORMlite进行数据库持久化映射,使得SQLite数据库的操作更加简洁高效。 ORMlite是一个轻量级的Java ORM框架,它允许开发者通过面向对象的方式来操作数据库,而无需直接编写SQL语句...
使用ORMLite,首先需要创建一个`DatabaseHelper`类,继承自`OrmLiteSqliteOpenHelper`(对于Android)或`BaseHelper`(对于Java SE)。在这个类中,你需要提供数据库版本号和创建/升级数据库的SQL语句。 3. **定义...
该压缩包包含ormlite开发jar包、源码包ormlite-android-4.43-sources.jar、API文档包ormlite-android-4.43-javadoc.jar,以及ormlite的android例子工程源码和一份官方教程ormlite.pdf
在这个基于MVC(模型-视图-控制器)架构的例子中,我们将探讨如何使用ORMLite在Java应用中有效地管理数据库交互。 1. **ORMLite简介**: ORMLite是一个流行的开源库,适用于Android和Java应用,它允许开发者通过...
一个关于OrmLite使用的例子,包括添加、编辑、删除、详细查询等功能。OrmLite提供了一些轻量级持久化Java对象到SQL数据库,同时也避免了复杂性。在开发Android项目时使用能压缩开发时间。
在这个例子中,`@DatabaseField`注解告诉OrmLite哪些字段应该映射到数据库表的列。`id = true`表示`id`字段是主键。 接下来,我们需要配置数据库连接。在Android中,这通常在`Application`类或者`onCreate()`方法中...
在Android中,我们可以使用各种ORM框架,比如ActiveAndroid、ORMLite、SugarORM等。 以简单的ORM模板为例,我们可以定义一个Java实体类,代表数据库表: ```java public class User extends SQLiteModel { @...
在“ORMLite简单例子”中,我们将探讨以下几个核心概念和操作: 1. **配置与依赖**:首先,你需要在项目中添加ORMLite的依赖。通常,这可以通过在build.gradle文件中添加相应的Maven或Gradle仓库依赖来完成。...
在这个"android hibernate demo例子"中,开发者可能使用了一个特殊的方法或者第三方库来使Hibernate在Android上运行。 这个"OrmDemo"项目包含以下关键组件: 1. **实体类(Entity Classes)**:这些是与数据库表...
ORMLite是一款轻量级的Java ORM(对象关系映射)库,用于简化数据库操作,尤其是在Android和Java SE应用中。这个"ORMLite详细入门demo"是个人编写的,旨在帮助开发者快速理解和掌握ORMLite的基本用法。在本文中,...
ORMLite提供了JDBC和Android两个版本,这里我们以JDBC为例,可以在pom.xml文件中添加如下依赖: ```xml <groupId>com.j256.ormlite</groupId> <artifactId>ormlite-jdbc <version>5.1 ``` 接下来,创建实体类...