Android客户端和数据库通信综合例程

Android客户端和数据库通信综合小例程序

1.android连接数据库的方式有两种

   1.通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。

   2.android直接连接数据库,这种方式非常耗手机内存,而且容易被反编译造成安全隐患,所以在实际项目中不推荐使用。

2.连接服务器方式: http通信 、 Socket通信

Http通信:POST方式、GET方式

POST方式和GET方式的区别:

前者通过Http消息实体发送数据给服务器,安全性高,数据传输大小没有限制,后者通过URL的查询字符串传递给服务器参数,以明文显示在浏览器地址栏,保密性差,最多传输2048个字符。但是GET请求并不是一无是处——GET请求大多用于查询(读取资源),效率高。POST请求用于注册、登录等安全性较高且向数据库中写入数据的操作。

除了POST和GET,http通信还有其他方式!请参见http请求的方法。

Http与Scoket区别:

简单理解:一个单向,一个双向。(具体了解,自行google)

开发环境部署:

程序结构:

android+servlet+service+mysql+mysqlfront

仅供参考:能实现相关功能即可

操作系统:win10

数据库:mysql    数据库工具: MySqlFront

服务器:tomcat      服务器工具: myeclipse

安卓端:genymotion虚拟机  安卓端工具:eclipse

数据库设计:
create table users (
id int primary key not null auto_increment,
username varchar(40) unique not null,
password varchar(40) not null
) ;在这里表明插入图片描述
在这里插入图片描述
1、服务器设计:
目录如图所示—>
在这里插入图片描述
2.项目代码:


```java
package cn.itcast.estore.service;

import javax.mail.Message;
import javax.mail.Session;

import cn.itcast.estore.dao.UserDAO;
import cn.itcast.estore.domain.User;
import cn.itcast.estore.utils.MailUtils;

/**
 * 用户操作 业务层
 * 
 * @author seawind
 * 
 */
public class UserService {
	// 用户注册
	// 这里没写返回值,用户名 或者 邮箱重复 报错
	public void regist(User user) {
		// 1、将用户信息 保存数据库
		// 生成激活码
		String activecode = MailUtils.generateActivecode();
		user.setActivecode(activecode);

		// 传递DAO
		UserDAO dao = new UserDAO();
		dao.insert(user);
		// 2、发送激活邮件 ---- 安装易邮测试
		// 易邮三个账号 service/111 aaa/111 bbb/111 --- service发邮件

		// 创建Session
		Session session = MailUtils.createSession();

		try {
			// 编写邮件
			Message message = MailUtils.generateMessage(session, user);
			// 发送邮件
			MailUtils.sendMail(message, session);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("发送激活邮件失败!");
		}

	}

	// 账户激活
	public void active(String activecode) {
		// 1、根据激活码 查询账户 --- 判断激活码是否存在
		UserDAO dao = new UserDAO();
		User user = dao.findByActivecode(activecode);
		if (user == null) {
			// 激活码无效
			throw new RuntimeException("激活码无效!");
		} else {
			// 激活码存在
			// 2 判断激活码是否过期
			if (System.currentTimeMillis() - user.getRegisttime().getTime() > 1000 * 60 * 60 * 2) {
				// 超过两小时
				// TODO 重新发送 --- 更新数据库保存激活码
				throw new RuntimeException("激活码已经过期!");
			} else {
				// 3 可以激活
				user.setState(1);
				dao.updateState(user);
			}
		}
	}

	// 用户登录 --- 返回包含所有用户信息 对象
	public User login(User user) {
		// 传递用户名 和密码 到DAO
		UserDAO userDAO = new UserDAO();
		return userDAO.findByUsernameAndPassword(user.getUsername(), user
				.getPassword());
	}
}

客户端设计:

现在开始思考需要什么东西…

<1> 登陆和注册页面:布局文件

login.xml , register.xml

<2> 登陆和注册页面对应的Activity组件,在activity中进行具体操作

login.java , register.java

<3> 能够实现Http以get/post方式通信的类

WebService.java , WebServicePost.java

<4> 网络通信权限

       <uses-permission android:name="android.permission.INTERNET" />

项目结构和AndroidMainfest.xml:

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />



  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.androidhttpdemo.Login"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
    <activity
        android:name="com.example.androidhttpdemo.RegLet"
        android:label="@string/title_activity_reg_let" >
    </activity>
</application>
``` 界面(极为简陋,按个人自行喜好设定):

登陆界面:
在这里插入图片描述
注册界面:
在这里插入图片描述
运行效果:
客户端注册——>
点击注册按钮时,将用户名和密码同时发送到了服务器,这个小demo很实用,用到了后台数据库和Android前端app开发,掌握了之后可以做出很多创意
在这里插入图片描述
服务器器端——>
服务器能够拿到数据之后,后期便可再次开发服务器,可以开发小型淘宝网站等
自建网站图片数据,可以通过手机客户端访问
后台数据库代码和Android工程后续放链接。
https://download.csdn.net/download/liumao1993/12052074
https://download.csdn.net/download/liumao1993/12052082

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值