ورود و ثبت نام کاربر با استفاده از دیتابیس در اندروید

دوشنبه 9 اسفند 1395

در این مقاله قصد داریم که با استفاده از دیتا بیس سبک sqllite یک اپلیکیشن درست نماییم که ابتدا کاربر ثبت نام نماید و بعد از ثبت نام بتواند با وارد نرم افزار خود شود در این جا از طریق دیتابیس این کار را انجام می دهیم.و به صورت داینامیک خواهد بود.

ورود و ثبت نام کاربر با استفاده از دیتابیس در اندروید

ابتدا صفحه اصلی را ایجاد می نماییم:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#999999" >

    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">

        <Button
                android:id="@+id/sign_in"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:text="ثبت نام"
                android:onClick="login_sigin" />

        <Button
                android:id="@+id/log_in"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="20sp"
                android:onClick="login_sigin"
                android:text="ورود" />

    </LinearLayout>

    <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="#CCCCCC"
            android:text="خوش آمدید"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#333333"
            android:textSize="25sp" />

</RelativeLayout>

صفحه لاگین را به صورت زیر ایجاد کنید:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#999999" >

    <RelativeLayout
            android:id="@+id/rl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/phone2"
            android:layout_alignRight="@+id/phone2"
            android:layout_centerVertical="true"
            android:addStatesFromChildren="true"
            android:background="@android:drawable/edit_text"
            android:baselineAligned="false"
            android:gravity="center_vertical" >

        <ImageView
                android:id="@+id/show_hide2"
                style="@android:style/Widget.Button.Inset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignBottom="@+id/rl"
                android:layout_alignParentTop="true"
                android:layout_marginTop="4dp"
                android:background="@drawable/show"
        />

        <EditText
                android:id="@+id/password2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/rl"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_toLeftOf="@+id/show_hide2"
                android:background="@null"
                android:ems="10"
                android:maxLength="40"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:hint="کلمه عبور"
                android:inputType="textPassword"
                android:maxLines="1"
                android:singleLine="true" />

    </RelativeLayout>

    <Button
            android:id="@+id/signin2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="ثبت نام"
            android:onClick="action"
            android:textSize="20sp"/>

    <Button
            android:id="@+id/start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/rl"
            android:layout_alignRight="@+id/rl"
            android:layout_below="@+id/rl"
            android:layout_marginTop="10dp"
            android:textSize="20sp"
            android:onClick="action"
            android:text="ادامه" />
    <EditText
            android:id="@+id/phone2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="شماره همراه"
            android:maxLength="10"
            android:inputType="phone" android:layout_above="@+id/rl" android:layout_centerHorizontal="true">

        <requestFocus />
    </EditText>

</RelativeLayout>

در صفحه ثبت نام قطعه کد زیر را بنویسید:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#999999"
>
    <EditText
            android:id="@+id/email_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/phone"
            android:layout_centerVertical="true"
            android:ems="10"
            android:hint="ایمیل"
            android:maxLength="40"
            android:inputType="textEmailAddress" >

    </EditText>

    <EditText
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/email_id"
            android:layout_centerHorizontal="true"
            android:ems="10"
            android:maxLength="10"
            android:hint="شماره همراه"
            android:inputType="number" />

    <EditText
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/phone"
            android:layout_centerHorizontal="true"
            android:ems="10"
            android:maxLength="30"
            android:hint="نام"
            android:inputType="textPersonName">
        <requestFocus />
    </EditText>

    <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/email_id"
            android:layout_alignRight="@+id/email_id"
            android:layout_below="@+id/email_id"
            android:addStatesFromChildren="true"
            android:background="@android:drawable/edit_text"
            android:baselineAligned="false"
            android:id="@+id/rl"
            android:gravity="center_vertical" >

        <ImageView
                android:id="@+id/show_hide"
                style="@android:style/Widget.Button.Inset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignBottom="@+id/rl"
                android:layout_alignParentTop="true"
                android:layout_marginTop="4dp"
                android:background="@drawable/show"
        />

        <EditText
                android:id="@+id/password"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/rl"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_toLeftOf="@+id/show_hide"
                android:background="@null"
                android:ems="10"
                android:maxLength="40"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:hint="کلمه عبور"
                android:inputType="textPassword"
                android:maxLines="1"
                android:singleLine="true" />

    </RelativeLayout>

    <Button
            android:id="@+id/login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="Log in"
            android:onClick="action"
            android:textSize="20sp"/>

    <Button
            android:id="@+id/signin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/rl"
            android:layout_alignRight="@+id/rl"
            android:layout_below="@+id/rl"
            android:layout_marginTop="10dp"
            android:text="ادامه"
            android:onClick="action"
            android:textSize="20sp" />

</RelativeLayout>

زمانی که کاربر وارد سایت شد قطعه کد زیر نمایش داده می شود:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#999999">

    <ImageButton
            android:id="@+id/w_image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/ic_launcher" />

    <TextView
            android:id="@+id/w_welcome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/w_image"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/w_image"
            android:text="خوش آمدید"
            android:gravity="center"
            android:background="#444444"
            android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

حالا برای کلاس ابتدا در صفحه اصلی از دستور case استفاده می کنیم که کاربر با زدن دکمه به صفحه ثبت نام برود یا صفحه ورود

package com.example.esmaili.loginsql;

import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

    Intent i=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void login_sigin(View v)
    {
        switch(v.getId())
        {
            case R.id.log_in:
                i=new Intent(this,Login.class);
                startActivityForResult(i, 500);
                overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
                break;
            case R.id.sign_in:
                i=new Intent(this,Signin.class);
                startActivityForResult(i, 500);
                overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);;
                break;
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
    }
}

برای صفحه لاگین ابتدا یک دیتا بیس ایجاد می کنیم در صورت نبود دیتا بیس بعد از آن یک جدول می سازیم و فیلد ها ی آن را تعریف می کنیم حالا برای دکمه ی login چک می کنیم اگر کاربر موجود بود که وارد صفحه خوش آمد گویی می شود در غیر این صورت به کاربر پیغام می دهد:

package com.example.esmaili.loginsql;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

/**
 * Created by Esmaili on 2/25/2017.
 */
public class Login extends Activity {
    Intent i=null;
    ImageView im=null;
    EditText tv1,tv4;
    boolean flag=false;
    SQLiteDatabase db=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        im=(ImageView)findViewById(R.id.show_hide2);
        tv1=(EditText)findViewById(R.id.phone2);
        tv4=(EditText)findViewById(R.id.password2);
        db=openOrCreateDatabase("mydb", MODE_PRIVATE, null);
        //	db.execSQL("create table if not exists login(name varchar,mobile_no varchar,email_id varchar,password varchar,flag varchar)");

        im.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

                if(flag==false)
                {
                    im.setImageResource(R.drawable.hide);
                    tv4.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    flag=true;
                }
                else
                {
                    im.setImageResource(R.drawable.show);
                    tv4.setInputType(129);
                    flag=false;

                }
            }
        });
    }

    public void action(View v)
    {
        switch(v.getId())
        {
            case R.id.signin2:
                i=new Intent(this,Signin.class);
                startActivityForResult(i, 500);
                overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_bottom);
                finish();
                break;
            case R.id.start:
                String mobile_no=tv1.getText().toString();
                String password=tv4.getText().toString();
                if(mobile_no==null||mobile_no==""||mobile_no.length()<10)
                {
                    show("Please Enter Correct mobile number.");
                }
                else if(password==null||password==""||password.length()<6)
                {
                    show("Please Enter Correct Password.");
                }
                else
                {
                    Cursor c=db.rawQuery("select * from login where mobile_no='"+mobile_no+"' and password='"+password+"'",null);
                    c.moveToFirst();
                    if(c.getCount()>0)
                    {
                        i=new Intent(this,Welcome.class);
                        startActivityForResult(i,500);
                        overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
                        db.close();
                        finish();
                    }
                    else
                        show("Wrong Password or Mobile number.");

                }
                break;
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
    }

    public void show(String str)
    {
        Toast.makeText(this, str, Toast.LENGTH_LONG).show();
    }

}


در صفحه ثبت نام در صورت موجود بودن جدول کاربر باید اطلاعات را پر نماید برای هر کدام از اطلاعات اگر خالی بود پیغام می آید که اطلاعات پر نشده است و آن را پر نمایید:

package com.example.esmaili.loginsql;

import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

/**
 * Created by Esmaili on 2/25/2017.
 */
public class Signin extends Activity {
    Intent i=null;
    ImageView im=null;
    EditText tv1,tv2,tv3,tv4;
    boolean flag=false;
    SQLiteDatabase db=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signin);
        im=(ImageView)findViewById(R.id.show_hide);
        tv1=(EditText)findViewById(R.id.name);
        tv2=(EditText)findViewById(R.id.email_id);
        tv3=(EditText)findViewById(R.id.phone);
        tv4=(EditText)findViewById(R.id.password);
        db=openOrCreateDatabase("mydb", MODE_PRIVATE, null);
        db.execSQL("create table if not exists login(name varchar,mobile_no varchar,email_id varchar,password varchar,flag varchar)");

        im.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

                if(flag==false)
                {
                    im.setImageResource(R.drawable.hide);
                    tv4.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    flag=true;
                }
                else
                {
                    im.setImageResource(R.drawable.show);
                    tv4.setInputType(129);
                    flag=false;

                }
            }
        });
    }

    public void action(View v)
    {
        switch(v.getId())
        {
            case R.id.login:
                i=new Intent(this,Login.class);
                startActivityForResult(i, 500);
                overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_bottom);
                finish();
                break;
            case R.id.signin:
                String name=tv1.getText().toString();
                String email_id=tv2.getText().toString();
                String mobile_no=tv3.getText().toString();
                String password=tv4.getText().toString();
                if(name==null||name==""||name.length()<3)
                {
                    show("Please Enter Correct Name.");
                }
                else if(mobile_no==null||mobile_no==""||mobile_no.length()<10)
                {
                    show("Please Enter Correct mobile number.");
                }
                else if(email_id==null||email_id==""||email_id.length()<10)
                {
                    show("Please Enter Correct Email id.");
                }
                else if(password==null||password==""||password.length()<6)
                {
                    show("Please Enter Strong Password.");
                }
                else
                {
                    db.execSQL("insert into login values('"+name+"','"+mobile_no+"','"+email_id+"','"+password+"','nothing')");
                    i=new Intent(this,Welcome.class);
                    startActivityForResult(i, 500);
                    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
                    db.close();
                    finish();
                }
                break;
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
    }

    public void show(String str)
    {
        Toast.makeText(this, str, Toast.LENGTH_LONG).show();
    }
}


و در نهایت که صفحه خوش آمد گویی را ایجاد می کنیم در این صفحه فقط لایه مورد نظر را تعریف می نماییم:

package com.example.esmaili.loginsql;

import android.app.Activity;
import android.os.Bundle;

/**
 * Created by Esmaili on 2/25/2017.
 */
public class Welcome extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
    }
}

خروجی به صورت زیر خواهد بود:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید