Mobile Services批量提交数据

Mobile Services批量提交数据,参考了文章:Inserting
multiple items at once in Azure Mobile Services
。里面其实已经介绍得比较清楚了,但由于是英文,而且有些地方交待得不清楚,也没有Android的示例,故下文以Android版本的开发为例作个补充。

首先在Mobile Services项目里新建AllToDoItems以及ToDoItem表,点击AllToDoItems,再点击script标签,将里面的内容替换如下:

function insert(item, user, request) {
    var table = tables.getTable('ToDoItem');
    populateTable(table, request, item.todos);
}

function populateTable(table, request, films) {
    var index = 0;
    films.forEach(changeReleaseDate);
    var insertNext = function () {
        if (index >= films.length) {
            request.respond(201, { id: 1, status: 'Table populated successfully' });
        } else {
            var toInsert = films[index];
            table.insert(toInsert, {
                success: function () {
                    index++;
                    if ((index % 20) === 0) {
                        console.log('Inserted %d items', index);
                    }

                    insertNext();
                }
            });
        }
    };

    insertNext();
}

function changeReleaseDate(obj) {
    var releaseDate = obj.ReleaseDate;
    if (typeof releaseDate === 'string') {
        releaseDate = new Date(releaseDate);
        obj.ReleaseDate = releaseDate;
    }
}

服务端的工作到此完成。

客户端新建两个类,分别如下:

package com.example.ecodriveiot;

/**
 * Represents an item in a ToDo list
 */
public class ToDoItem {

	/**
	 * Item text
	 */
	@com.google.gson.annotations.SerializedName("text")
	private String mText;

	/**
	 * Item Id
	 */
	@com.google.gson.annotations.SerializedName("id")
	private String mId;

	/**
	 * Indicates if the item is completed
	 */
	@com.google.gson.annotations.SerializedName("complete")
	private boolean mComplete;

	/**
	 * ToDoItem constructor
	 */
	public ToDoItem() {

	}

	@Override
	public String toString() {
		return getText();
	}

	/**
	 * Initializes a new ToDoItem
	 *
	 * @param text
	 *            The item text
	 * @param id
	 *            The item id
	 */
	public ToDoItem(String text, String id) {
		this.setText(text);
		this.setId(id);
	}

	/**
	 * Returns the item text
	 */
	public String getText() {
		return mText;
	}

	/**
	 * Sets the item text
	 *
	 * @param text
	 *            text to set
	 */
	public final void setText(String text) {
		mText = text;
	}

	/**
	 * Returns the item id
	 */
	public String getId() {
		return mId;
	}

	/**
	 * Sets the item id
	 *
	 * @param id
	 *            id to set
	 */
	public final void setId(String id) {
		mId = id;
	}

	/**
	 * Indicates if the item is marked as completed
	 */
	public boolean isComplete() {
		return mComplete;
	}

	/**
	 * Marks the item as completed or incompleted
	 */
	public void setComplete(boolean complete) {
		mComplete = complete;
	}

	@Override
	public boolean equals(Object o) {
		return o instanceof ToDoItem && ((ToDoItem) o).mId == mId;
	}
}
package com.example.ecodriveiot;

public class AllToDoItems {
	@com.google.gson.annotations.SerializedName("id")
	public String id;
	public String status;
	public ToDoItem[] todos;
}

批量提交的代码如下:

ToDoItem item = new ToDoItem();

		item.setText("test");
		item.setComplete(false);

		ToDoItem[] items = new ToDoItem[2];
		items[0]=item;
		items[1]=item;
		// Insert the new item
		/*mToDoTable.insert(item, new TableOperationCallback<ToDoItem>() {

			public void onCompleted(ToDoItem entity, Exception exception, ServiceFilterResponse response) {

				if (exception == null) {
					if (!entity.isComplete()) {
						mAdapter.add(entity);
					}
				} else {
					createAndShowDialog(exception, "Error");
				}

			}
		});*/
		AllToDoItems allToDoItems = new AllToDoItems();
		allToDoItems.todos=items;
		mClient.getTable(AllToDoItems.class).insert(allToDoItems, new TableOperationCallback<AllToDoItems>() {

			public void onCompleted(AllToDoItems entity, Exception exception, ServiceFilterResponse response) {

				if (exception == null) {
					Log.i("Debug", "status:"+entity.status);
				} else {
					createAndShowDialog(exception, "Error");
				}
			}
		});

上面的代码其实是在sdk demo的基础上改的,mClient的初始化自己加上即可。其他客户端的开发其实是类似的,可以查看英文原文。

Mobile Services批量提交数据

时间: 2024-10-12 00:46:03

Mobile Services批量提交数据的相关文章

C# httpwebrequest批量提交数据到网站。

非新文,由自己以前在baidu网站转来的.(现在百度的博客不喜欢,转来这存档.很久以前的工作笔记了) 因为工作需要要将大致300多条数据提交到网站,而网站在提交 错数据后无法正常进入相应的数据页面进行修改, 不得己自己动手开发一个. 关键字:httpwebrequest, httpwebrespone, excel ,datagradview,httpwatch.cookie 首先下载一个httpwatch安装,在IE中截获提交信息 登录流: POST /index.php/Public/che

Azure Mobile Services的REST API调用方式和自定义API

Azure Mobile Services(移动服务)是微软在Azure平台中提供的一种跨平台的移动应用后端服务,即移动后端即服务.支持.NET和JavaScript(Node.js)写后端代码:支持各种主流的前端平台,包括iOS.Android.Windows.HTML.提供了单点登录,脱机同步,访问内部数据,推送提醒等功能:也能根据需要自动伸缩.从而让开发移动应用后端服务变得非常简单. 虽然微软给大家提供了针对各个平台的SDK,不过还是可以直接使用它的REST API来操作服务端的数据.Ad

表单提交时如何将错误信息传递到页面中,并且保存原来提交数据

曾经何时,你还有我或许都在困惑,如何方便的将验证不通过的表单信息再返回到前台页面,例如我注册一个账号,辛辛苦苦填写了N多项,一个格式验证没有通过,一切都需要充填,虽然Ajax可以解决这个问题,但是我们总不能把所有表单提交都弄成ajax,更何况有若干人就是没事把javascript给禁止了.哎哎,好了解决方案来了,下面以用户登录为例,说说我的解决方案. 服务器端用nodejs实现: login.html 简单的提交表单 <form action="" id="loginF

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

用python操作mysql数据库(之批量插入数据)

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb #建立连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db') cur = conn.cursor() #对数据进行操作 li = [('tanzhenx','shaoguan'),('huangmengdie','shaoguan')] #定义一个列表,列表中

jQuery选取所有复选框被选中的值并用Ajax异步提交数据

昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来批量提交复选框数据,今天用到了就分享一下. 由于我做的项目一些地方比较复杂,这里我只举一个小例子,能理解就好. 首先,我做了一个简单的多个复选框的界面,如图: 这是一个比较简单的多个复选框提交界面.代码如下: 1 <body> 2 <div> 3 <input type=&quo

Android批量插入数据到SQLite数据库

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知.因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度. 有时需要把一些数据内置到应用中,常用的有以下2种方式:其一直接拷贝制作好的SQLite数据库文件,其二是使用系统提供的数据库,然后把数据批量插入.我更倾向于使用第二种方式:使用系统创建的数据库,然后批量插入数据.批量插入数据也有很多方法,那么那种方法更快呢,下面通过一个dem

bulk批量删除数据

bulk批量删除数据 1.  案列介绍 需要在一个1亿行的大表中,删除1千万行数据 需求是在对数据库其他应用影响最小的情况下,以最快的速度完成 如果业务无法停止的话,可以参考下列思路: 根据ROWID分片.再利用Rowid排序.批量处理.回表删除 在业务无法停止的时候,选择这种方式,的确是最好的 一般可以控制在每一万行以内提交一次,不会对回滚段造成太大压力 我在做大DML时,通常选择一两千行一提交 选择业务低峰时做,对应用也不至于有太大影响 2.  代码实现 测试环境 drop table t_

JDBC的批量处理数据

主要用到的方法有: preparedStatement.executeBatch();//积攒的数据执行 preparedStatement.clearBatch();//积攒的清除掉 preparedStatement.addBatch();//这儿并不马上执行,积攒到一定数量之后,刷新执行----------------------------------------------------------------------------------------------- Test12