云平台编程与开发(三):创建基于X5Cloud云平台的Hello World程序(运行在Android的手机、平板上)

云平台编程与开发(三):创建基于X5Cloud云平台的Hello World程序(运行在Android的手机、平板上) 
http://blog.sina.com.cn/s/blog_85e4309c0100u7mb.html 

如何创建基于X5Cloud的Hello World程序(运行在Android的手机、平板上) 
基于X5 SDK开发一个简单的Hello World程序,详细步骤如下:(1)下载X5 SDK包,并到X5Cloud首页(www.x5cloud.com)注册一个新用户账号。注册成功后,登录进入主控界面之个人资料,获得该用户账号对应的唯一用户编号(16位数字)。(2)准备Android开发环境,本测试基于【WindowsXp+MyEclipse8.5+Android SDK2.2+X5 SDK包】另:ADT(Android开发工具包)需要到MyEclipse8.5帮助里的软件工作环境中心去更新下载;Android的SDK2.2里的库文件以及开发工具包最好更新下载完整。 
----------X5 SDK包 (官方下载地址) 
----------MyEclipse8.5 (官方下载地址) 
----------Android SDK2.2 (官方下载地址)(4)在本地打开eclipse,导入Hello World程序源代码(点此下载)。另:附上一个基于Android上的 x5应用小项目GoodsManagerSys程序源码下载 (点此下载)(5)参见如下Hello World源码部分截选,要运行Hello World程序,需将源代码中涉及到的用户唯一编号更改为自己所注册账号对应的用户编号;同时要注意将服务器域名确认设置为“service.x5cloud.com”(参见如下红色粗体代码部分)。【工程Hello world的结构图】 DataBase类: 
package com.infobase; import java.util.ArrayList; import java.util.List; import x5.database.X5Persist; import x5.exception.X5Exception; public class DataBase { private static String userid="8888888888888888"; //userid唯一编号 private static int dbtype=1; //dbtype private static String dbname="android"; //dbname private static String serverip="service.x5cloud.com"; //serverip服务器域名 public boolean createDB(){ //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); int count=-1; try { //调用方法,返回int值大于或等于零为创库成功 count=x5.createDB(); } catch (X5Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); return false; }finally{ if(count>=0){ System.out.println("创建数据库成功"); return true; } } return true; } public void createTable(){ //创建sqlserver表的sql语句 String sql="create table mytable" + "(user_id int not null," + "user_name varchar(20) not null," + "user_psw varchar(20) not null" + ")"; //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); int count=-1; try { //调用方法,返回int值大于或等于零为创建表成功 count = x5.persist(sql); } catch (X5Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } if(count>=0){ System.out.println("成功!受影响行数为:"+count); } } public void insertData(){ String str1="insert into mytable(user_name,user_psw) values('android','admin')"; String str2="insert into mytable(user_name,user_psw) values('infobase','admin')"; List sql=new ArrayList(); sql.add(str1); sql.add(str2); int istransaction=1; //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); boolean flag=false; try { //调用方法,返回boolean值标识是否执行成功 flag = x5.x5job(sql,istransaction); } catch (X5Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } if(flag){ System.out.println("成功!"); } } } 
Initialize类: 
package com.infobase; public class Initialize { public boolean Init(){ DataBase db=new DataBase(); if(db.createDB()){ // 数据库创建成功; db.insertData(); db.createTable(); return true; }else{ return false; } // 数据库已存在,使用存在的数据库 } } 
SelectTable类: 
package com.infobase; import x5.database.X5DBResult; import x5.database.X5Persist; import x5.exception.X5Exception; public class SelectTable { public static X5DBResult doGetResult() throws X5Exception { String sql="select * from mytable where user_id<?"; Object []objs=new Object[]{1000}; String userid="8888888888888888"; //userid int dbtype=1; //dbtype String dbname="android"; //dbname String serverip="service.x5cloud.com"; //serverip //实例化,把标志身份的userid传过去 X5Persist x5=new X5Persist(userid,dbtype,dbname,serverip); //带参数的查询,返回结果集 X5DBResult rs=x5.select(sql,objs); return rs; } } 
User类: 
package com.infobase; public class User{ private String username; private String password; public String getUsername(){ return username; } public void setUsername(String username){ this.username=username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } } 
Cache类: 
package com.infobase; public class Cache{ private User User; private Cache(){ } private static class CacheHolder{ private static final Cache INSTANCE=new Cache(); } public static Cache getInstance(){ return CacheHolder.INSTANCE; } public User getUser(){ return User; } public void setUser(User User){ this.User=User; } } 
LoginActivity类: 
package com.infobase; import x5.database.X5DBResult; import x5.exception.X5Exception; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity { //用户名及密码验证 private void checkedData() throws X5Exception{ String username=((EditText)findViewById(R.id.username)).getText().toString(); String password=((EditText)findViewById(R.id.password)).getText().toString(); User user=new User(); user.setUsername(username); user.setPassword(password); //判定登录与否的result boolean result=false; SelectTable st=new SelectTable(); //X5.database.X5DBResult类 //该类为查询数据库得到的结果集 X5DBResult rs=st.doGetResult(); //hasNext()方法返回Boolean值,判断是否还有下一行记录 while(rs.hasNext()){ if(rs.getObject(2).toString().equals(user.getUsername()) &rs.getObject(3).toString().equals(user.getPassword().toString())){ result=true; } } if(result){ Cache.getInstance().setUser(user); //输入正确提示框 Toast.makeText(getApplicationContext(),"登录成功",1000).show(); Intent intent=new Intent(); //正确后跳转到WelcomeActivity intent.setClass(LoginActivity.this,WelcomeActivity.class); startActivity(intent); }else{ //输入不正确提示框 Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show(); } } //申明login_button_listener public Button.OnClickListener login_button_listener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub try { checkedData(); } catch (X5Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(getApplicationContext(),"数据库连接不上",1000).show(); } } }; //监听并响应按钮的‘单击’事件 public void find_and_modify_listener(){ Button login_button=(Button)findViewById(R.id.login); login_button.setOnClickListener(login_button_listener); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //主界面显示后数据源的初始化 Initialize initialize=new Initialize(); if(initialize.Init()){ Toast.makeText(getApplicationContext(),"数据初始化完成",1000).show(); }else{ Toast.makeText(getApplicationContext(),"数据源已存在或者数据库连接不上",1000).show(); } find_and_modify_listener(); } } 
WelcomeActivity类: 
package com.infobase; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class WelcomeActivity extends Activity{ public void onCreate(Bundle icesky){ super.onCreate(icesky); setContentView(R.layout.welcome); TextView tv=(TextView)findViewById(R.id.tv); tv.setText("Welcome "+Cache.getInstance().getUser().getUsername()+"!"); } } 
main.xml文件: 
<?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:text="username" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/username" android:layout_height="wrap_content" android:layout_width="match_parent" /> <TextView android:text="password" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/password" android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="textPassword" /> <Button android:text="Login" android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 
主界面显示如下:welcome.xml类: 
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="Welcome!" android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 
欢迎界面显示如下:AndroidManifest.xml文件: 
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.infobase" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".LoginActivity" 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=".WelcomeActivity"></activity> </application> <!-- 访问internet权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 单元测试 --> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.changcheng.web.client" android:label="Tests for My App" /> </manifest>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值