我尝试使用windows azure移动服务作为数据库进行登录注册页面。我有问题,当我注册为用户,我能够注册2个相同的用户名。是否可以使用户名唯一,所以我不会有重复的用户名。我也想知道如何在WAMS中检索数据,以便我能够检查用户名和密码以使登录部分工作。 FYI btn1用于登录,btn2用于登记。帮我解决该怎么做。感谢。
LoginRegister.java
package mp.memberuse;
import java.net.MalformedURLException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;
import com.microsoft.windowsazure.mobileservices.MobileServiceClient;
import com.microsoft.windowsazure.mobileservices.MobileServiceTable;
import com.microsoft.windowsazure.mobileservices.ServiceFilterResponse;
import com.microsoft.windowsazure.mobileservices.TableOperationCallback;
public class LoginRegister extends Activity {
Button btn1, btn2, btn3;
EditText tf1, tf2, tf3, tf4, tf5, tf6, tf7, tf8, tf9, tf10, tf11;
TextView tv1, tv2;
private MobileServiceClient mClient;
private MobileServiceTable<Members> mMembersTable;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabs = (TabHost) this.findViewById(R.id.lt2tabhost);
tabs.setup();
TabSpec ts1 = tabs.newTabSpec("Login");
ts1.setIndicator("Login");
ts1.setContent(R.id.c1);
tabs.addTab(ts1);
TabSpec ts2 = tabs.newTabSpec("Register");
ts2.setIndicator("Register");
ts2.setContent(R.id.c2);
tabs.addTab(ts2);
btn1 = (Button)findViewById(R.id.button1);
btn2 = (Button)findViewById(R.id.button2);
btn3 = (Button)findViewById(R.id.button3);
tf1=(EditText) findViewById(R.id.editText1);
tf2=(EditText) findViewById(R.id.editText2);
tf3=(EditText) findViewById(R.id.editText3);
tf4=(EditText) findViewById(R.id.editText4);
tf5=(EditText) findViewById(R.id.editText5);
tf6=(EditText) findViewById(R.id.editText6);
tf7=(EditText) findViewById(R.id.editText7);
tf8=(EditText) findViewById(R.id.editText8);
tf9=(EditText) findViewById(R.id.editText9);
tf10=(EditText) findViewById(R.id.editText10);
tv1=(TextView) findViewById(R.id.login);
tv2=(TextView) findViewById(R.id.register);
try {
// Create the Mobile Service Client instance, using the provided
// Mobile Service URL and key
mClient = new MobileServiceClient(
"**************",
"**************",
this
);
// Get the Mobile Service Table instance to use
mMembersTable = mClient.getTable(Members.class);
} catch (MalformedURLException e) {
//createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error");
}
btn1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
String username, password;
username = tf1.getText().toString();
password = tf2.getText().toString();
}
});
btn2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
String username, password, cpassword, fullname, nric, address, phone, email;
username = tf3.getText().toString();
password = tf4.getText().toString();
cpassword = tf5.getText().toString();
fullname = tf6.getText().toString();
nric = tf7.getText().toString();
address = tf8.getText().toString();
phone = tf9.getText().toString();
email = tf10.getText().toString();
if (mClient == null) {
return;
}
Members mbs = new Members();
mbs.setUsername(username);
mbs.setPassword(password);
mbs.setFullname(fullname);
mbs.setNric(nric);
mbs.setAddress(address);
mbs.setPhone(phone);
mbs.setEmail(email);
if(!password.equals(cpassword))
{
tv2.setText("Password & Confirm Password does not match.");
}
else if(username.equals("") || password.equals("") || cpassword.equals("") || fullname.equals("") || nric.equals("") || address.equals("") || phone.equals("") || email.equals(""))
{
tv2.setText("Do not leave any field empty.");
}
else
{
mMembersTable.insert(mbs, new TableOperationCallback<Members>()
{
public void onCompleted(Members entity, Exception exception, ServiceFilterResponse response)
{
if (exception == null)
{
tv2.setText("Register Complete.");
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");
tf7.setText("");
tf8.setText("");
tf9.setText("");
tf10.setText("");
}
else
{
tv2.setText("Fail to register!");
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");
tf7.setText("");
tf8.setText("");
tf9.setText("");
tf10.setText("");
}
}
});
}
}
});
btn3.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
tf3.setText("");
tf4.setText("");
tf5.setText("");
tf6.setText("");
tf7.setText("");
tf8.setText("");
tf9.setText("");
tf10.setText("");
}
});
}
}
Members.java
package mp.memberuse;
public class Members {
@com.google.gson.annotations.SerializedName("id")
private int mId;
@com.google.gson.annotations.SerializedName("username")
private String mUsername;
@com.google.gson.annotations.SerializedName("password")
private String mPassword;
@com.google.gson.annotations.SerializedName("fullname")
private String mFullname;
@com.google.gson.annotations.SerializedName("nric")
private String mNric;
@com.google.gson.annotations.SerializedName("address")
private String mAddress;
@com.google.gson.annotations.SerializedName("phone")
private String mPhone;
@com.google.gson.annotations.SerializedName("email")
private String mEmail;
public Members() {
}
public Members(int id, String username, String password, String fullname, String nric, String address, String phone, String email) {
this.setId(id);
this.setUsername(username);
this.setPassword(password);
this.setFullname(fullname);
this.setNric(nric);
this.setAddress(address);
this.setPhone(phone);
this.setEmail(email);
}
public int getId() {
return mId;
}
public final void setId(int id) {
mId = id;
}
public String getUsername() {
return mUsername;
}
public final void setUsername(String username) {
mUsername = username;
}
public String getPassword() {
return mPassword;
}
public final void setPassword(String password) {
mPassword = password;
}
public String getFullname() {
return mFullname;
}
public final void setFullname(String fullname) {
mFullname = fullname;
}
public String getNric() {
return mNric;
}
public final void setNric(String nric) {
mNric = nric;
}
public String getAddress() {
return mAddress;
}
public final void setAddress(String address) {
mAddress = address;
}
public String getPhone() {
return mPhone;
}
public final void setPhone(String phone) {
mPhone = phone;
}
public String getEmail() {
return mEmail;
}
public final void setEmail(String email) {
mEmail = email;
}
}
答案 0 :(得分:0)
在向表中插入新值时,应使用服务器脚本来检查表中是否已存在该名称。例如,选中this tutorial。另外,请不要在表中存储普通密码,而是使用相同的插入脚本来散列密码并存储散列。
Josh Twist有一个good blog post,展示了如何使用移动服务构建自定义标识。
谢谢,Yavor