`
348725767
  • 浏览: 105426 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

android ormlite 登录注册的例子

阅读更多

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的登录注册的小例子就完成了。

 

4
0
分享到:
评论
5 楼 348725767 2012-07-20  
squall.dai 写道
BTW 我很无聊……盯着看了很久……
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中?
3 楼 squall.dai 2012-07-19  
操作数据库的类,我按照mvc的模式把操作数据库的类单独分离开了

----操作数据库的类不是按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查询到这个数据库的表数据呢

相关推荐

    android平台使用ORMLite的小例子

    通过实践这个例子,开发者可以更深入地理解ORMLite如何简化Android上的数据库编程。然而,ORMLite还提供了更多高级特性,如自增主键、查询构建器、异步操作等,开发者可以根据实际需求进一步学习和探索。

    android ormlite多表关联实例

    ORMLite是一个轻量级的Java ORM库,它同样支持Android平台,使得我们可以用面向对象的方式进行数据库操作,避免了繁琐的SQL语句编写。本实例将深入探讨如何在Android项目中使用ORMLite实现多表关联操作。 首先,...

    Android ORMLite小例子

    在这个"Android ORMLite小例子"中,我们将探讨如何在Android项目中使用ORMLite进行数据持久化。 首先,我们需要了解ORMLite的基本概念。ORMLite将Java对象映射到数据库表,这样我们就可以通过操作对象来完成数据库...

    android ormlite 使用例子 学生信息管理

    在"android ormlite 使用例子 学生信息管理"这个项目中,我们可以假设有一个`Student`类,代表学生信息表。`Student`类会包含如`id`(主键)、`name`、`age`、`classId`等字段,这些字段会自动映射到数据库表的相应...

    android ormlite 模拟实现联合主键

    在Android开发中,ORM(Object-Relational Mapping)框架如ORMLite被广泛用于简化数据库操作,使得开发者能够更方便地处理数据存储。ORMLite虽然功能强大,但默认并不直接支持联合主键,即由两个或多个字段共同构成...

    Android中使用ormlite实现持久化

    本文将详细介绍如何在Android中使用ORM库ORMLite来实现数据持久化,特别是涉及到外键的使用。 首先,我们需要了解ORMLite是什么。ORMLite(Object Relational Mapping Lite)是一个轻量级的ORM库,它允许开发者将...

    测试android下基于ormlite持久化数据库小例子

    在"测试android下基于ormlite持久化数据库小例子"这个项目中,我们将学习如何配置ORMlite,创建数据表,以及执行基本的数据库操作。 首先,我们需要在Android项目中添加ORMlite库。可以通过Gradle依赖管理工具,在...

    Android ormlite更改数据库默认位置

    在Android开发中,ORM(Object-Relational Mapping)框架如ORMLite可以帮助开发者更方便地操作数据库,将数据对象与数据库表之间的映射关系自动化处理。ORMLite为Android提供了强大的支持,允许开发者以面向对象的...

    Android数据库框架ORMLite使用

    ORMLite(Object-Relational Mapping Lite)是一个轻量级的ORM框架,它简化了Android与SQLite数据库之间的交互,让开发者无需直接编写SQL语句,而是通过Java对象进行操作。本文将详细介绍ORMLite的使用方法和核心...

    Android上使用ormlite 数据库持久映射

    本篇将详细讲解如何在Android上使用ORMlite进行数据库持久化映射,使得SQLite数据库的操作更加简洁高效。 ORMlite是一个轻量级的Java ORM框架,它允许开发者通过面向对象的方式来操作数据库,而无需直接编写SQL语句...

    ormlite操作示例代码

    使用ORMLite,首先需要创建一个`DatabaseHelper`类,继承自`OrmLiteSqliteOpenHelper`(对于Android)或`BaseHelper`(对于Java SE)。在这个类中,你需要提供数据库版本号和创建/升级数据库的SQL语句。 3. **定义...

    ormlite开发jar包+源码+android例程

    该压缩包包含ormlite开发jar包、源码包ormlite-android-4.43-sources.jar、API文档包ormlite-android-4.43-javadoc.jar,以及ormlite的android例子工程源码和一份官方教程ormlite.pdf

    使用ormlite的例子,基于MVC

    在这个基于MVC(模型-视图-控制器)架构的例子中,我们将探讨如何使用ORMLite在Java应用中有效地管理数据库交互。 1. **ORMLite简介**: ORMLite是一个流行的开源库,适用于Android和Java应用,它允许开发者通过...

    OrmLiteDemo.zip_ORMLite_android_android SQL查询_orm使用示例

    一个关于OrmLite使用的例子,包括添加、编辑、删除、详细查询等功能。OrmLite提供了一些轻量级持久化Java对象到SQL数据库,同时也避免了复杂性。在开发Android项目时使用能压缩开发时间。

    OrmLite示例

    在这个例子中,`@DatabaseField`注解告诉OrmLite哪些字段应该映射到数据库表的列。`id = true`表示`id`字段是主键。 接下来,我们需要配置数据库连接。在Android中,这通常在`Application`类或者`onCreate()`方法中...

    android sqlite 的应用例子

    在Android中,我们可以使用各种ORM框架,比如ActiveAndroid、ORMLite、SugarORM等。 以简单的ORM模板为例,我们可以定义一个Java实体类,代表数据库表: ```java public class User extends SQLiteModel { @...

    ORMLite 简单例子

    在“ORMLite简单例子”中,我们将探讨以下几个核心概念和操作: 1. **配置与依赖**:首先,你需要在项目中添加ORMLite的依赖。通常,这可以通过在build.gradle文件中添加相应的Maven或Gradle仓库依赖来完成。...

    android hibernate demo例子

    在这个"android hibernate demo例子"中,开发者可能使用了一个特殊的方法或者第三方库来使Hibernate在Android上运行。 这个"OrmDemo"项目包含以下关键组件: 1. **实体类(Entity Classes)**:这些是与数据库表...

    ORMLite详细入门demo

    ORMLite是一款轻量级的Java ORM(对象关系映射)库,用于简化数据库操作,尤其是在Android和Java SE应用中。这个"ORMLite详细入门demo"是个人编写的,旨在帮助开发者快速理解和掌握ORMLite的基本用法。在本文中,...

    ORMLite入门简单操作完整代码

    ORMLite提供了JDBC和Android两个版本,这里我们以JDBC为例,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;com.j256.ormlite&lt;/groupId&gt; &lt;artifactId&gt;ormlite-jdbc &lt;version&gt;5.1 ``` 接下来,创建实体类...

Global site tag (gtag.js) - Google Analytics