কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েড SQLite-এ রিয়েল ডেটা টাইপ ব্যবহার করার পদ্ধতি

অ্যান্ড্রয়েড SQLite-এ রিয়েল ডেটা টাইপ ব্যবহার

উদাহরণে যাওয়ার আগে, আমাদের জানতে হবে অ্যান্ড্রয়েডে SQLite ডাটাবেস কী। SQLite হল একটি ওপেন সোর্স SQL ডাটাবেস যা ডিভাইসে টেক্সট ফাইলে ডেটা সংরক্ষণ করে। অ্যান্ড্রয়েডে বিল্ট-ইন SQLite ডাটাবেস ইমপ্লিমেন্টেশন থাকে। SQLite সমস্ত রিলেশনাল ডাটাবেস ফিচার সাপোর্ট করে। এই ডাটাবেস অ্যাক্সেস করতে JDBC, ODBC এর মতো কোনো কানেকশন স্থাপন করার প্রয়োজন নেই।

ধাপ ১: নতুন প্রজেক্ট তৈরি

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় ডিটেইল পূরণ করে নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লে আউট XML কোড যোগ করুন

res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" 
    xmlns:tools="https://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:orientation="vertical"> 
    <EditText 
        android:id="@+id/name" 
        android:layout_width="match_parent" 
        android:hint="নাম লিখুন" 
        android:layout_height="wrap_content" /> 
    <EditText 
        android:id="@+id/salary" 
        android:layout_width="match_parent" 
        android:inputType="numberDecimal" 
        android:hint="বেতন লিখুন" 
        android:layout_height="wrap_content" /> 
    <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"> 
        <Button 
            android:id="@+id/save" 
            android:text="সংরক্ষণ" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" /> 
        <Button 
            android:id="@+id/refresh" 
            android:text="রিফ্রেশ" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" /> 
        <Button 
            android:id="@+id/udate" 
            android:text="আপডেট" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" /> 
        <Button 
            android:id="@+id/Delete" 
            android:text="সর্বোপরি মুছুন" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" /> 
    </LinearLayout> 
    <ListView 
        android:id="@+id/listView" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 
    </ListView> 
</LinearLayout>

উপরোক্ত কোডে নাম এবং বেতনের জন্য EditText নেওয়া হয়েছে। ব্যবহারকারী Save বাটনে ক্লিক করলে ডেটা SQLite ডাটাবেসে সংরক্ষিত হবে। Refresh বাটনে ক্লিক করলে ListView-র পরিবর্তনগুলো দেখাবে।

ধাপ ৩: MainActivity.java কোড যোগ করুন

src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:

package com.example.andy.myapplication; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 
import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 
    Button save, refresh; 
    EditText name, salary; 
    ArrayAdapter arrayAdapter; 
    private ListView listView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        
        final DatabaseHelper helper = new DatabaseHelper(this); 
        final ArrayList array_list = helper.getAllCotacts(); 
        
        name = findViewById(R.id.name); 
        salary = findViewById(R.id.salary); 
        listView = findViewById(R.id.listView); 
        
        arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list); 
        listView.setAdapter(arrayAdapter); 
        
        findViewById(R.id.Delete).setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                if (helper.delete()) { 
                    Toast.makeText(MainActivity.this, "মুছে ফেলা হয়েছে", Toast.LENGTH_LONG).show(); 
                } else { 
                    Toast.makeText(MainActivity.this, "মুছে ফেলা হয়নি", Toast.LENGTH_LONG).show(); 
                } 
            } 
        }); 
        
        findViewById(R.id.udate).setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                if (!name.getText().toString().isEmpty() && !salary.getText().toString().isEmpty()) { 
                    if (helper.update(name.getText().toString(), salary.getText().toString())) { 
                        Toast.makeText(MainActivity.this, "আপডেট হয়েছে", Toast.LENGTH_LONG).show(); 
                    } else { 
                        Toast.makeText(MainActivity.this, "আপডেট হয়নি", Toast.LENGTH_LONG).show(); 
                    } 
                } else { 
                    name.setError("নাম লিখুন"); 
                    salary.setError("বেতন লিখুন"); 
                } 
            } 
        }); 
        
        findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                array_list.clear(); 
                array_list.addAll(helper.getAllCotacts()); 
                arrayAdapter.notifyDataSetChanged(); 
                listView.invalidateViews(); 
                listView.refreshDrawableState(); 
            } 
        }); 
        
        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                if (!name.getText().toString().isEmpty() && !salary.getText().toString().isEmpty()) { 
                    if (helper.insert(name.getText().toString(), salary.getText().toString())) { 
                        Toast.makeText(MainActivity.this, "ইনসার্ট হয়েছে", Toast.LENGTH_LONG).show(); 
                    } else { 
                        Toast.makeText(MainActivity.this, "ইনসার্ট হয়নি", Toast.LENGTH_LONG).show(); 
                    } 
                } else { 
                    name.setError("নাম লিখুন"); 
                    salary.setError("বেতন লিখুন"); 
                } 
            } 
        }); 
    } 
}

ধাপ ৪: DatabaseHelper.java কোড যোগ করুন

src/DatabaseHelper.java ফাইলে নিচের কোড যোগ করুন:

package com.example.andy.myapplication; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteException; 
import android.database.sqlite.SQLiteOpenHelper; 
import java.io.IOException; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import java.util.ArrayList; 

class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "salaryDatabase9"; 
    public static final String CONTACTS_TABLE_NAME = "SalaryDetails"; 
    
    public DatabaseHelper(Context context) { 
        super(context, DATABASE_NAME, null, 2); 
    } 
    
    @Override 
    public void onCreate(SQLiteDatabase db) { 
        try { 
            db.execSQL( 
                "create table " + CONTACTS_TABLE_NAME + 
                "(id INTEGER PRIMARY KEY, name text, salary real, datetime default current_timestamp)" 
            ); 
        } catch (SQLiteException e) { 
            try { 
                throw new IOException(e); 
            } catch (IOException e1) { 
                e1.printStackTrace(); 
            } 
        } 
    } 
    
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
        db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE_NAME); 
        onCreate(db); 
    } 
    
    public boolean insert(String s, String s1) { 
        SQLiteDatabase db = this.getWritableDatabase(); 
        ContentValues contentValues = new ContentValues(); 
        contentValues.put("name", s); 
        contentValues.put("salary", s1); 
        db.replace(CONTACTS_TABLE_NAME, null, contentValues); 
        return true; 
    } 
    
    public ArrayList getAllCotacts() { 
        SQLiteDatabase db = this.getReadableDatabase(); 
        ArrayList<String> array_list = new ArrayList<String>(); 
        Cursor res = db.rawQuery("select (id ||' : '||trim(name) || ' : ' || salary || ' : '|| datetime) as fullname from " + CONTACTS_TABLE_NAME, null); 
        res.moveToFirst(); 
        while (res.isAfterLast() == false) { 
            if ((res != null) && (res.getCount() > 0)) 
                array_list.add(res.getString(res.getColumnIndex("fullname"))); 
            res.moveToNext(); 
        } 
        return array_list; 
    } 
    
    public boolean update(String s, String s1) { 
        SQLiteDatabase db = this.getWritableDatabase(); 
        db.execSQL("UPDATE " + CONTACTS_TABLE_NAME + " SET name = " + "'" + s + "', " + "salary = " + "'" + s1 + "'"); 
        return true; 
    } 
    
    public boolean delete() { 
        SQLiteDatabase db = this.getWritableDatabase(); 
        db.execSQL("DELETE from " + CONTACTS_TABLE_NAME); 
        return true; 
    } 
}

অ্যাপ্লিকেশন চালান

আপনার অ্যান্ড্রয়েড মোবাইল ডিভাইস কম্পিউটারের সাথে সংযুক্ত আছে ধরে নেওয়া হয়েছে। Android Studio-তে আপনার প্রজেক্টের এক্টিভিটি ফাইল খুলুন এবং টুলবার থেকে Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং ডিভাইস চেক করুন যা ডিফল্ট স্ক্রিন দেখাবে।

অ্যান্ড্রয়েড SQLite-এ রিয়েল ডেটা টাইপ ব্যবহার করার পদ্ধতি

উপরোক্ত ফলাফলে, আমরা নামকে টেক্সট হিসেবে এবং বেতনকে রিয়েল মান হিসেবে সংরক্ষণ করছি।

  1. অ্যান্ড্রয়েড SQLite-এ রিয়েল ডেটা টাইপ ব্যবহার করার পদ্ধতি

  2. অ্যান্ড্রয়েড SQLite-এ typeof() ফাংশন ব্যবহার করার পদ্ধতি

  3. অ্যান্ড্রয়েড SQLite-এ total_changes() ফাংশন ব্যবহার করার পদ্ধতি

  4. অ্যান্ড্রয়েড SQLite-এ unlikely() ফাংশন ব্যবহার করার পদ্ধতি