tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            آموزش اندروید فصل چهارم قسمت پنجم – Create Content Provider

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • آموزش اندروید فصل چهارم قسمت پنجم – Create Content Provider
            آموزش برنامه نویسی اندروید فصل چهارم
            آموزش اندروید فصل چهارم قسمت چهارم – Content Provider
            26 شهریور 1395
            پروژه نرم افزار فروشگاه کیف و کفش با سی شارپ
            پروژه نرم افزار فروشگاه کیف و کفش با سی شارپ
            11 مهر 1395
            منتشر شده توسط خانم منطق
            آموزش برنامه نویسی اندروید فصل چهارم

            آموزش برنامه نویسی اندروید فصل چهارم

            در قسمت پنجم آموزش اندروید در ادامه آموزش قبل مبحث Content Provider ها یا تامین کننده محتوی , تمامی مراحل ایجاد یک ContentProviderr را از کلاس دیتابیس و کوری های مورد نیاز تا کلاس ContentProvider را به صورت کامل و با جزییات شرح خواهیم داد پس با ما همراه باشید..

            آموزش اندروید فصل چهارم قسمت پنجم – Create Content Provider

            ایجاد تامین کننده محتوی

            آموزش های مربوط بهContent Provider را در آموزش قبل به صورت کامل ارئه شد. در این بخش قصد داریم یک تامین کننده محتوی را ایجاد کنیم برای این کار نیاز به دو کلاس داریم یکی کلاسی که از ContentProvider ارث بری میکند و دیگری کلاسی که حاوی دستورات SQL میباشد و از SQLiteOpenHelper چنین کدنویسی میکنیم که ما برای درک بیشتر این مبحث مرحله به مرحله کدنویسی را پیش میبریم

            ۱-ابتدا کلاس SQL خود را با نام دلخواه ایجاد میکنیم

            public class Database extends SQLiteOpenHelper{
            
            
            
                    private static final String DATABASE_NAME="MYDB.db";
            
                    private static final String TABLE_NAME="myTbl";
            
                    private static final String SQL_CREATE="create table " +
             TABLE_NAME + "(_id integer primary key , name  text , family  text , address text )";
            
                    private static final String SQL_DROP="drop table is exists" + TABLE_NAME;
            
                     Database(Context context) {
            
                             super(context, DATABASE_NAME,null, 1);
            
                    }
            
                    @Override
            
                    public void onCreate(SQLiteDatabase db) {
            
                             db.execSQL(SQL_CREATE);
            
                    }
            
            
            
                    @Override
            
                    public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
            
                             db.execSQL(SQL_DROP);
            
                             onCreate(db);
            
                    }
            

            دو متد onCreate و onUpgrade و سازنده Database مربوط به کلاس SQLiteOpenHelper میباشد و حتما باید ایجاد شوند که میتوانید اشارگر را روی نام کلاس نگه داشته و از کادر باز شده گزینه Add unimplemented را انتخاب کنیم تا این متدها و سازنده ایجاد شوند سپس دستورات مورد نیاز را در آن قرار دهیم. متغیرهای تعریف شده در ابتدا کلاس نیز همانگونه که از نامشان مشخص است نام دیتابیس و جدول و همچنین کوری مربوط به ایجاد جدول و بارگزاری درصورت وجود داشتن را مشخص میکنند در متد های onCreate و onUpgrade نیز کوری های تعیین شده را قرار داده ایم.

            public long addnewStudent(ContentValues values)throws SQLException{
            
                             long id =getWritableDatabase().insert(TABLE_NAME, "", values);
            
                             if(id <=0){
            
                                       throw new SQLException("failed to add an student");
            
                             }
            
                             return id;
            
                    }
            

            همچنین میتوانید دستوراتی چون حذف و اضافه و آپدیت مقادیر درون جدول را نیز اعمال کنید برای مثال در تکه کد فوق دستورات ایجاد یک رکورد جدید در جدول را مشاهده میکنید.

            برای توضیح عبارت فوق میتوان گفت برای ایجاد یک رکورد از متد insert استفاده میکنیم که شامل سه پارامتر است : نام جدول , مقدار اختیاری nullColumnHack  و مقادیری که باید در رکورد قرار گیرند و در انتها نیز شرطی برای اطمینان حاصل کردن از ایجاد صحیح رکورد در نظر گرفته شده.

            public int updateStudent(String id, ContentValues values){
            
                             if(id==null){
            
                                       return getWritableDatabase().update(TABLE_NAME, values, null, null);
            
                             }else{
            
                                       return getWritableDatabase().
            update(TABLE_NAME, values, "_id=?",new String[]{id});
            
                             }
            
                    }
            
            public int deleteStudent(String id){
            
                             if(id==null){
            
                                       return getWritableDatabase().delete(TABLE_NAME, null, null);
            
                             }else{
            
                                       return getWritableDatabase().delete(TABLE_NAME, "_id=?", new String[]{id});
            
                             }
            
                    }
            

            تکه کدهای فوق نیز برای حذف و ویرایش جدول بکار میرود که براساس دو حالت این عملیات را انجام میدهد یکی با id مشخص و دیگری بدون id که در آن صورت به روی کل جدول اعمال خواهد شد.

            حال باید کلاس Content Provider را ایجاد کنیم

            import android.content.ContentProvider;
            
            import android.content.ContentUris;
            
            import android.net.Uri;
            
            import android.content.ContentValues;
            
            import android.content.Context;
            
            import android.content.UriMatcher;
            
            import android.database.Cursor;
            
            
            
            public class mContentProvider extends ContentProvider {
            
            
            
                    private static final String PROVIDER_NAME="com.example.mycontentprovider";
            
                    private static final Uri CONTENT_URI=Uri.parse("content://" + PROVIDER_NAME + "/stu");
            
                    private static final int STU=1;
            
                    private static final int STU_ID=2;
            
                    private static final UriMatcher uriMatcher=getUriMatcher();
            
                    private static UriMatcher getUriMatcher(){
            
                             UriMatcher uriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
            
                             uriMatcher.addURI(PROVIDER_NAME, "stu", STU);
            
                             uriMatcher.addURI(PROVIDER_NAME, "stus/#", STU_ID);
            
                             return uriMatcher;
            
                    }
            
                    private Database db=null;
            

            نام provider باید یک نام یکتا باشد که میتوان از نام پکیج برنامه استفاده کرد که در ادامه در URI از آن استفاده خواهیم کرد و Content_URI در واقع آدرس این ContentProvider است و برای آدرس دهی از آن استفاده میشود که شامل چهار بخش است

            • The scheme : که همیشه باید مقدار  content:// داشته باشد.
            • AUTHORITY : آدرس ContentProvider را تکمیل میکند بدین صورت که از یک نام واحد مثل نام پکیج به علاوه نام provider استفاده میشود.
            • : Path در این بخش نام جدول را وارد میکنیم که یک مقدار اختیاری است.
            • ID : این بخش نیز اختیاری یا Optional  است که مشخص کننده یک سطر خاص و اطلاعات خاص است که با یک شرط و مقدار مشخص میتوان مشخص کرد.

            متغیر uriMacher نیز دو نوع آدرس را مشخص میکند یکی به صروت ساده نوشته شده که اشاره به تمامی اطلاعات دارد و دیگری تنها اشاره به یک سطر مشخص که با id  مشخص میشود دارد. و در انتها نیز یک شی از نوع کلاس دیتابیس برای فراخوانی توبع درونش ایجاد کرده ایم.

            کلاس ContentProvider نیز مانند کلاس SQLiteOpenHelper به دلیل Abstract بودن شامل متدهایی هستند که حتماباید ایجاد شود که به دو صورت میتوانید این متد هارا ایجاد کنید یکی به صورت دستی و دیگری به روشی که درابتدا آموزش گفته شد. درادامه یکی یکی این توابع را بررسی خواهیم کرد

            @Override
            
                    public String getType(Uri uri){
            
                             switch(uriMatcher.match(uri)){
            
                             case STU:
            
                                       return "vnd.android.cursor.dir/vnd.com.example.mycontentprovider";
            
                             case STU_ID:
            
                                       return "vnd.android.cursor.item/vnd.com.example.mycontentprovider";
            
                             }
            
                             return "";
            
                    }
            

                    متد getType نوع MIME اطلاعات URI داده شده را برمیگرداند شکل کلی این uri بدین صورت است vnd.<uri pattern>./vnd.<name>.<type>   که بدین شرح است

            • <uri pattern> : این عبارت برای یک سطر بدین صورت خواهد بود cursor.item و برای چندین سطر بصورت android.cursor.dir
            • <name> : باید یک اسم عمومی مانند نام پکیج باشد.
            • <type> : باید منحصر بفردبه uri مربوط باشد.
            @Override
            
                    public boolean onCreate(){
            
                             Context context=getContext();
            
                              db =new Database(context);
            
                             return true;
            
                    }
            

            متد onCreate هنگامی که تامین کننده محتوی شروع بکار میکند فراخوانی میشود که همانگونه که مشاهده میکنید از متغیر db برای فراخوانی کلاس دیتابیس استفاده شده و context برنامه را نیز به سازنده کلاس ارسال کرده.

                    @Override
            
                    public Cursor query(Uri uri, String[] projrction ,
            String Selection ,String[] SelecionArgs , String sortOrder){
            
                             String id=null;
            
                             if(uriMatcher.match(uri)==STU_ID){
            
                                       id=uri.getPathSegments().get(1);
            
                             }
            
                             return db.getStudent(id, projrction, Selection, SelecionArgs, sortOrder);
            
                    }
            

            متد query یک درخواست از سمت کاربر دریافت میکند و آن را به شکل شی cursor برمیگرداند.

            @Override
            
                    public Uri insert(Uri uri ,ContentValues values){
            
                             try{
            
                                       long id=db.addnewStudent(values);
            
                                       Uri returnUri=ContentUris.withAppendedId(CONTENT_URI, id);
            
                                       return returnUri;
            
                             }catch(Exception e){
            
                                       return null;
            
                             }
            
                    }
            

            متد insert یک رکورد جدید در contentprovider ایجاد میکند.

                 @Override
            
                    public int delete(Uri uri, String selection, String[] selectionArgs){
            
                             String id=null;
            
                             if(uriMatcher.match(uri)==STU_ID){
            
                                       id=uri.getPathSegments().get(1);
            
                             }
            
                             return db.deleteStudent(id);
            
                    }
            
            
            
                    @Override
            
                    public int update(Uri uri, ContentValues values, String selection ,String[] selectionArgs){
            
                             String id=null;
            
                             if(uriMatcher.match(uri)==STU_ID){
            
                                       id=uri .getPathSegments().get(1);
            
                             }
            
                             return db.updateStudent(id, values);
            
                    }
            

            دو متد update , delete نیز برای ویرایش و حذف از کلاس دیتابیس استفاده میکنند.

            مدرس : خانم مهندس داودی نژاد

            آموزش اندروید فصل چهارم قسمت چهارم

            آموزش اندروید فصل پنجم قسمت اول

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج