ورود و ثبت نام کاربر با استفاده از دیتابیس در اندروید
دوشنبه 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); } }
خروجی به صورت زیر خواهد بود:
- Android
- 3k بازدید
- 12 تشکر