แสดงบทความที่มีป้ายกำกับ Database แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Database แสดงบทความทั้งหมด

4/3/59

Android SQLite Database with Relationship Tables

Android SQLite Database with Relationship Tables การสร้างตารางที่มีหลายตารางและมีความสัมพันธ์กัน


มาดูตัวอย่างโค้ด Android ที่มีหลาย ๆ Table แล้วแต่ละ Table มีความสัมพันธ์กัน

ก่อนอื่นเราก็ต้องมาทำการ list รายชื่อตารางและคอมลัมน์ออกมาก่อน ดังตัวอย่าง

    // WORD_GROUP_TABLE
    public static final String TABLE_WORDS_GROUP = "WORDS_GROUP";
    public static final String COL_TABLE_WORD_GROUP_ID = "ID";
    public static final String COL_TABLE_WORD_GROUP_EN = "GROUP_EN";
    public static final String COL_TABLE_WORD_GROUP_TH = "GROUP_TH";

    // WORD_ITEMS_TABLE
    public static final String TABLE_WORDS_ITEMS = "WORDS_ITEMS";
    public static final String COL_TABLE_WORD_ITEMS_ID = "ID";
    public static final String COL_TABLE_WORD_ITEMS_EN = "ITEM_EN";
    public static final String COL_TABLE_WORD_ITEMS_TH = "ITEM_TH";
    public static final String COL_TABLE_WORD_ITEMS_GROUP_REFERENCES = "ITEM_GROUP";

จากตัวอย่างข้างต้นเราจะสร้าง Table ขึ้นมา 2 Table ที่ชื่อว่า WORDS_GROUP และ WORDS_ITEMS ซึ่งจะมีความสัมพันธ์คือให้คอลัมน์ ITEM_GROUP ชี้ไปที่ ID ของ WORD_GROUP

เมื่อได้แล้ว เราก็ต้องทำการ สร้างตารางโดยเอาโค้ดไว้ในส่วน onCreate ดังตัวอย่างโค้ด

 db.execSQL("CREATE TABLE " + TABLE_WORDS_GROUP +" (" + COL_TABLE_WORD_GROUP_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                        + COL_TABLE_WORD_GROUP_EN + " TEXT, "
                        + COL_TABLE_WORD_GROUP_TH + " TEXT);"
        );

        db.execSQL("CREATE TABLE " + TABLE_WORDS_ITEMS + " (" + COL_TABLE_WORD_ITEMS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                        + COL_TABLE_WORD_ITEMS_EN + " TEXT, "
                        + COL_TABLE_WORD_ITEMS_TH + " TEXT, "
                        + COL_TABLE_WORD_ITEMS_GROUP_REFERENCES + " INTEGER, "
                        + "FOREIGN KEY(" + COL_TABLE_WORD_ITEMS_GROUP_REFERENCES + ") REFERENCES "
                        + TABLE_WORDS_GROUP + "(" + COL_TABLE_WORD_GROUP_ID + "));"
        );

จากตัวอย่างโค้ดเราจะสร้างตารางโดย ใช้ Query จากนั้นก็ให้เราเพิ่มข้อมูลเข้าไปได้เลย

ดูตัวอย่างเต็ม ๆ ไฟล์ได้ตามโค้ดด้านล่าง


package com.doesystem.educate.englishwords.database;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Doe on 2/25/2016.
 */
public class DBHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "DOE_WORDS";
    private static final int DB_VERSION = 6;

    // WORD_GROUP_TABLE
    public static final String TABLE_WORDS_GROUP = "WORDS_GROUP";
    public static final String COL_TABLE_WORD_GROUP_ID = "ID";
    public static final String COL_TABLE_WORD_GROUP_EN = "GROUP_EN";
    public static final String COL_TABLE_WORD_GROUP_TH = "GROUP_TH";

    // WORD_ITEMS_TABLE
    public static final String TABLE_WORDS_ITEMS = "WORDS_ITEMS";
    public static final String COL_TABLE_WORD_ITEMS_ID = "ID";
    public static final String COL_TABLE_WORD_ITEMS_EN = "ITEM_EN";
    public static final String COL_TABLE_WORD_ITEMS_TH = "ITEM_TH";
    public static final String COL_TABLE_WORD_ITEMS_GROUP_REFERENCES = "ITEM_GROUP";

    public DBHelper(Context context){
        super(context, DB_NAME, null, DB_VERSION);
    }

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_WORDS_GROUP +" (" + COL_TABLE_WORD_GROUP_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                        + COL_TABLE_WORD_GROUP_EN + " TEXT, "
                        + COL_TABLE_WORD_GROUP_TH + " TEXT);"
        );

        db.execSQL("CREATE TABLE " + TABLE_WORDS_ITEMS + " (" + COL_TABLE_WORD_ITEMS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                        + COL_TABLE_WORD_ITEMS_EN + " TEXT, "
                        + COL_TABLE_WORD_ITEMS_TH + " TEXT, "
                        + COL_TABLE_WORD_ITEMS_GROUP_REFERENCES + " INTEGER, "
                        + "FOREIGN KEY(" + COL_TABLE_WORD_ITEMS_GROUP_REFERENCES + ") REFERENCES "
                        + TABLE_WORDS_GROUP + "(" + COL_TABLE_WORD_GROUP_ID + "));"
        );

        insertDataToTable(db);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_WORDS_GROUP);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_WORDS_ITEMS);
        onCreate(db);
    }

    String[][] dataGroup = new String[][]{
            {"Body", "ร่างกาย"},
            {"Internal Organs", "อวัยวะภายในร่างกาย"},
            {"Family", "ครอบครัว"},
            {"House and Around the House", "บ้านและรอบ ๆ บ้าน"},
            {"Bedroom", "ห้องนอน"},
            {"In the House", "ของใช้ในบ้าน"}
    };
    String[][][] dataItems = new String[][][]{
            {
                {"abdomen", "ท้อง"},
                {"ankle", "ข้อเท้า"},
                {"arm", "แขน"},
                {"armpit", "รักแร้"},
                {"back", "หลัง (ส่วนของร่างกาย)"},
                {"bone", "กระดูก"},
                {"bottom", "ก้น"},
                {"cheek", "แก้ม"},
                {"chest", "หน้าอก"},
                {"chin", "คาง"}
            },
            {
                {"adrenal gland", "ต่อมหมวกไต"},
                {"anus", "ทวารหนัก"},
                {"appendix", "ไส้ติ่ง"},
                {"artery", "เส้นเลือดแดงที่นำเลือดแดงออกจากหัวใจ"},
                {"bladder", "กระเพาะปัสสาวะ"}
            },
            {
                {"ancestor", "บรรพบุรุษ"}
            },
            {
                {"attic", "ห้องใต้หลังคา"}
            },
            {
                {"alarm clock", "นาฬิกาปลุก"}
            },
            {
                {"air-conditioner", "เครื่องปรับอากาศ"},
                {"aquarium", "ตู้ปลา"}
            }
    };

    private void insertDataToTable(SQLiteDatabase db){
        for(int i = 0; i < dataGroup.length; i++){
            insertToWordsGroupTable(db, dataGroup[i][0], dataGroup[i][1]);
            for(int j = 0; j < dataItems[i].length; j++){
                insertToWordsItemsTable(db, dataItems[i][j][0], dataItems[i][j][1], i + 1);
            }
        }
    }

    private void insertToWordsGroupTable(SQLiteDatabase db, String groupEn, String groupTh){
        db.execSQL("INSERT INTO " + TABLE_WORDS_GROUP
                + " VALUES (null, '" + groupEn + "', '" + groupTh + "');");
    }

    private void insertToWordsItemsTable(SQLiteDatabase db, String itemEn, String itemTh, int groupId){
        db.execSQL("INSERT INTO " + TABLE_WORDS_ITEMS
                + " VALUES (null, '" + itemEn + "', '" + itemTh + "', " + groupId + ");");
    }
}

20/1/59

การสร้าง User สำหรับ Database ใน SQL Developer

การสร้าง User สำหรับ Database ใน SQL Developer

เรามาดูวิธีง่าย ๆ ในการสร้าง User ให้กับ Database ใน SQL Developer กันครับ เริ่มต้นด้วยการเปิดโปรแกรม SQL Developer ขึ้นมาก่อน จากนั้นให้เลือก Database ที่เราต้องการสร้าง User ในส่วนของ Other Users ให้คลิกขวา เลือก Create User... ตามรูปด้านล่าง


จะปรากฎหน้าต่าง Create User ขึ้นมาให้ใส่ชื่อในช่อง User Name แล้วก็ Password ตามรูปด้านล่าง


ในส่วนของ Granted Roles ให้กำหนด Roles ของ User ตามรูปด้านล่าง


เมื่อกำหนดแล้วก็กด Apply เพียงแค่นี้เราก็ได้ User มาแล้ว

ลองต่อ Database โดยใช้ User ที่สร้างขึ้นโดยใช้โปรแกรม SQL Developer

ต่อไปลองไปต่อ Database โดยใช้ User ที่สร้างขึ้นกันดูครับ ตามรูปด้านล่าง


จากรูปจะเห็นว่าเมื่อเราใช้ User ที่เราสร้างขึ้นใหม่ก็สามารถ Connect Success ได้ เพียงแค่นี้เราก็ได้ User ที่ใช้ได้กับ Database ที่ต้องการแล้ว

19/1/59

การสร้าง Database ใน Oracle

การสร้าง Database ใน Oracle

มาดูวิธีการสร้าง Database ใน Oracle กันครับ

เริ่มแรกให้เข้าไปที่ Database Configuration Assistant ตามรูปด้านล่าง


เมื่อเข้าโปรแกรมแล้วจะได้ดังรูปด้านล่าง


หน้านี้ไม่มีอะไรเป็นแค่หน้า welcome ให้คลิก Next ไปครับ จะเจอรูปด้านล่าง


หน้านี้เป็นตัวเลือกที่เราจะใช้งาน ในที่นี้เราจะสร้าง Database เราก็เลือก Create a Database จากนั้นคลิก Next จะเจอหน้าดังรูปด้านล่าง


ในหน้านี้เป็นการเลือก Template Database ในที่นี้เลือกตัวเลือกแรก จากนั้นกด Next จะได้ดังรูปด้านล่าง


ในหน้านี้เป็นการกำหนด Database Name กับ SID ให้ใส่ค่าที่ต้องการจากนั้นกด Next


ส่วนหน้านี้เป็นการกำหนดค่า Options ต่าง ๆ ตามที่เราต้องการ จากนั้นกด Next


ในหน้านี้เป็นการกำหนด password ให้กับ user ในที่นี้ผมเลือก Use the Same Administrative Password for All Accounts เพื่อเป็นการบอกว่าให้ใช้ password เหมือนกันหมดทุก account แต่เราสามารถกำหนด password แต่ละ account ก็ได้ เมื่อได้แล้วกด Next


หน้านี้เป็นการกำหนดที่อยู่ของ file เมื่อเลือกได้แล้วกด Next


ในหน้านี้เป็นส่วนของการกำหนด Recovery ของ Database เมื่อได้แล้วกด Next


หน้านี้จะบอกถึงรายละเอียดของ Database ให้กด Next


ในส่วนนี้จะเป็นการค่า Parameter เริ่มต้นของ Database เมื่อได้แล้วกด Next


หน้านี้เป็นรายละเอียด Storage ของ Database ให้เรากด Next


หน้านี้เป็นตัวเลือกขั้นตอนสุดท้ายในการสร้าง Database เมื่อเสร็จแล้วให้กด Finish


จะมีหน้าต่าง Confirm แสดงขึ้นมาก่อนที่จะสร้าง Database เราสามารถจดบันทึกหรือ Save เป็น HTML ไว้ดูทีหลังได้ เมื่อถูกต้องหมดแล้วให้เรากด OK เพื่อทำการสร้าง Database


หน้านี้จะเป็นขั้นตอนการสร้าง Database ให้เรารอจนกว่าจะครบทุกขั้นตอนหรือ 100% อาจต้องใช้เวลาซักพัก


จะปรากฎหน้าต่าง Confirm ขึ้นมาอีกครั้งหนึ่งให้กด Exit ไป เพียงแค่นี้เราก็ได้ Database แล้ว

ทดลองเชื่อมต่อ Database ที่สร้างโดยใช้ SQL Developer

ให้ทำการทดลองเชื่อต่อ Database ที่สร้างขึ้นมาโดยใช้โปรแกรม SQL Developer ดูเพื่อความแน่ใจ


จะเห็นว่า Connect Success แล้ว เพียงแค่นี้เราก็ได้ Database แล้ว

4/8/58

การเซตค่า PDO ใน PHP ติดต่อฐานข้อมูล MySQL ภาษาไทย

การเซตค่า PDO ใน PHP ติดต่อฐานข้อมูลภาษาไทย

สวัสดีครับ บทความนี้เรามาดูวิธีการเขียน PHP เป็นการติดต่อฐานข้อมูลโดยใช้ PDO กันครับ ซึ่งหลาย ๆ คนอาจจะเกิดปัญหาว่า เวลาดึงข้อมูลมาจากฐานข้อมูลแล้ว ภาษาไทยอ่านไม่ออก เป็นเครื่องหมายคำถาม ?? หรืออ่านไม่รู้เรื่อง

ตัวอย่างวิธีการติดต่อก็คือ

<?php
 class PDOConnect{
  private $host;
  private $userhost;
  private $passhost;
  private $database;
  private $pdo;

  public function __construct(){
   $this->host = "localhost";
   $this->userhost = "root";
   $this->passhost = "doesysteminfo";
   $this->database = "doesysteminfo";
  }

  public function getConnect(){
   try {
    $this->pdo = new PDO("mysql:host={$this->host};dbname={$this->database};charset=UTF8", $this->userhost, $this->passhost);
    $this->pdo->exec("set names utf8");
   } catch (Exception $e) {
    echo $e;
   }
   return $this->pdo;
  }
 }
?>
แค่นี้เราก็สามารถติดต่อฐานข้อมูลเป็นภาษาไทยได้แล้ว