我的錯誤:安卓:我只是想有避免電子郵件地址重複驗證
處com.me.samplesqlite.DatabaseHelper com.me.samplesqlite.DatabaseHelper.checkEmailExists(DatabaseHelper.java:83) .insert(DatabaseHelper.java:67)at com.me.samplesqlite.SignUp.onSignUpClick(SignUp.java:84)
我收到我註冊的所有字段後出現錯誤(強制停止)模塊。
我只想驗證一下避免重複的電子郵件地址。有人請幫助我進行這種驗證?這是一個簡單的註冊和一些驗證。所以,我的目標是避免重複插入電子郵件地址的數據。
我的目標是當有將無法使用相同的電子郵件重新註冊
**package com.me.samplesqlite;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SignUp extends Activity
{
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
}
public void onSignUpClick(View view)
{
if(view.getId() == R.id.btnSignUp)
{
EditText name = (EditText)findViewById(R.id.txtName);
EditText uname = (EditText)findViewById(R.id.txtUsername);
EditText email = (EditText)findViewById(R.id.txtEmail);
EditText pass = (EditText)findViewById(R.id.txtPassword);
EditText cpass = (EditText)findViewById(R.id.txtConfirmPass);
String sname = name.getText().toString();
String suname = uname.getText().toString();
String semail = email.getText().toString();
String spass = pass.getText().toString();
String scpass = cpass.getText().toString();
if(sname.length()==0 && suname.length()==0 && semail.length()==0 && spass.length()==0)
{
name.requestFocus();
name.setError("FIELD CANNOT BE EMPTY");
uname.requestFocus();
uname.setError("FIELD CANNOT BE EMPTY");
email.requestFocus();
email.setError("FIELD CANNOT BE EMPTY");
pass.requestFocus();
pass.setError("FIELD CANNOT BE EMPTY");
}
else if(!sname.matches("[a-zA-Z]+"))
{
name.requestFocus();
name.setError("ENTER ONLY ALPHABETICAL CHARACTER");
}
else if(!(spass.length()>5))
{
pass.requestFocus();
pass.setError("PASSWORD MUST HAVE MORE THAN 5 CHARACTERS");
}
else if (!scpass.equals(spass))
{
cpass.requestFocus();
cpass.setError("PASSWORD DON'T MATCH");
}
else if(!semail.matches("[a-zA-Z0-9._-][email protected][a-z]+\\.+[a-z]+"))
{
email.requestFocus();
email.setError("INVALID EMAIL ADDRESS");
}
else
{
Contact b = new Contact();
boolean isEmailExist = helper.insertContact(b);
if(isEmailExist)
{
// notify user
Toast mail = Toast.makeText(SignUp.this, "Email Already Exist." , Toast.LENGTH_SHORT);
mail.show();
}
else
{
// proceed
Contact c = new Contact();
c.setName(sname);
c.setUName(suname);
c.setEmail(semail);
c.setPass(spass);
helper.insertContact(c);
//popup message
Toast password = Toast.makeText(SignUp.this, "Data has been saved." , Toast.LENGTH_SHORT);
password.show();
Intent i = new Intent(SignUp.this, MainActivity.class);
startActivity(i);
}
//insert the details on database
}
}
if(view.getId() == R.id.btnCancelSign)
{
Intent i = new Intent(SignUp.this, MainActivity.class);
startActivity(i);
finish();
}
}
}
**
package com.me.samplesqlite;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
public class DatabaseHelper extends SQLiteOpenHelper
{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contacts.db";
private static final String TABLE_NAME = "contacts";
private static final String COLUMN_ID = "id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_UNAME = "uname";
private static final String COLUMN_EMAIL = "email";
private static final String COLUMN_PASS = "pass";
SQLiteDatabase db;
private static final String TABLE_CREATE = "create table contacts (id integer primary key not null , " +
"name text not null , uname text not null , email text not null , pass text not null);";
public DatabaseHelper(Context context)
{
super(context , DATABASE_NAME , null , DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(TABLE_CREATE);
this.db = db;
}
public boolean insertContact(Contact c)
{
boolean isEmailExist = false;
db = this.getReadableDatabase();
ContentValues values = new ContentValues();
String query = "select * from contacts";
Cursor cursor = db.rawQuery(query, null);
int count = cursor.getCount();
values.put(COLUMN_ID, count);
values.put(COLUMN_NAME , c.getName());
values.put(COLUMN_UNAME , c.getUName());
values.put(COLUMN_EMAIL , c.getEmail());
values.put(COLUMN_PASS, c.getPass());
if(checkEmailExists(c.getEmail()))
{
isEmailExist = true;
}
else
{
db.insert(TABLE_NAME, null, values);
}
db.close();
return isEmailExist;
}
private boolean checkEmailExists(String email) {
String query = new StringBuilder().append("Select ")
.append(email).append(" from ").append(TABLE_NAME)
.toString();
Cursor cursor = db.rawQuery(query,
new String[] { email });
if (cursor.getCount() > 0) {
cursor.close();
return true;
} else {
cursor.close();
return false;
}
}
public String searchPass(String uname)
{
db = this.getReadableDatabase();
String query = "select uname, pass from "+ TABLE_NAME;
Cursor cursor = db.rawQuery(query , null);
String a,b;
b = "not found";
if(cursor.moveToFirst())
{
do
{
a = cursor.getString(0);
b = cursor.getString(1);
if(a.equals(uname))
{
b = cursor.getString(1);
break;
}
}while(cursor.moveToNext());
}
return b;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
String query = "DROP TABLE IF EXISTS "+TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
}
什麼是你的問題你得到錯誤哪些強制關閉你的應用程序或者你不能驗證重複的電子郵件? – Pavan
當我按下注冊按鈕強制關閉時,我填寫了註冊模塊中的所有字段。 –
好的,然後請發佈您的日誌.. – Pavan