Subbab 10 / 10

Windform Pt 2.

Langkah 1

Pakai project yang telah dibuat sebelumnya (Project Windform Minggu Lalu). Apabila tidak mengikuti silahkan clone project melalui link berikut : https://github.com/tunggulalmajid/PraktikumWinForms

langkah 2 (Create Database dan DDL PostgreSQL)

Buatlah Database dan beri nama bebas sesuai kreatifitas diri sendiri, kemudian buka query tool kemudian ketikkan DDL berikut :

sql
1
2
3
4
5
6
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    nama VARCHAR(100),
    umur INT,
    asal VARCHAR(100)
);

Langkah 3 : Buat Database Helper

Setelah selesai membuat database maka kita akan membuat 1 class untuk membantu dalam membuat koneksi kedalam database. Class tersebut bernama DatabaseHelper.cs. Sebelum itu jangan lupa install library npgsql terlebih dahulu untuk menghubungkan aplikasi dengan database.

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Npgsql;

namespace PraktikumWinForms
{
    public class DatabaseHelper
    {

        private string connectionString;
        public DatabaseHelper()
        {
            string host = "localhost";
            string port = "5432";
            string db = "db_windform_user";
            string username = "postgres";
            string password = "password";

            connectionString = $"Host={host};Port={port};Database={db};Username={username};Password={password}";
        }

        public NpgsqlConnection getConnection()
        {
            NpgsqlConnection conn = new NpgsqlConnection(connectionString);
            return conn;
        }

    }
}

Langkah 4 : Sesuaikan isi dari class user.cs

Tambahkan Field Id untuk class user.cs, kemudian tambahkan beberapa function untuk operasi CRUD kedalam Database

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Npgsql;

namespace PraktikumWinForms
{
    public class User
    {
        public int id {  get; set; }
        public string nama {  get; set; }
        public int umur { get; set; }
        public string asal { get; set; }

        public User(int id,string nama, int umur, string asal) 
        {
            this.id = id;
            this.nama = nama;
            this.umur = umur;
            this.asal = asal;


        }

        public List<User> GetAllUsers(NpgsqlConnection connection)
        {
            List<User> list = new List<User>();
            using var conn = connection;
            conn.Open();
            using var cmd = new NpgsqlCommand("SELECT id, nama, umur, asal FROM users", conn);
            using var reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                list.Add(new User(
                    reader.GetInt32(0),
                    reader.GetString(1),
                    reader.GetInt32(2),
                    reader.GetString(3)
                ));
            }
            return list;
        }


        // CREATE
        public void AddUser(User user, NpgsqlConnection connection)
        {
            using var conn = connection;
            conn.Open();
            using var cmd = new NpgsqlCommand(
                "INSERT INTO users (nama, umur, asal) VALUES (@nama, @umur, @asal)", conn);
            cmd.Parameters.AddWithValue("nama", user.nama);
            cmd.Parameters.AddWithValue("umur", user.umur);
            cmd.Parameters.AddWithValue("asal", user.asal);
            cmd.ExecuteNonQuery();
        }


        // UPDATE
        public void UpdateUser(User user, NpgsqlConnection connection)
        {
            using var conn = connection;
            conn.Open();
            using var cmd = new NpgsqlCommand(
                "UPDATE users SET nama=@nama, umur=@umur, asal=@asal WHERE id=@id", conn);
            cmd.Parameters.AddWithValue("id", user.id);
            cmd.Parameters.AddWithValue("nama", user.nama);
            cmd.Parameters.AddWithValue("umur", user.umur);
            cmd.Parameters.AddWithValue("asal", user.asal);
            cmd.ExecuteNonQuery();
        }


        // DELETE
        public void DeleteUser(int id, NpgsqlConnection connection)
        {
            using var conn = connection;
            conn.Open();
            using var cmd = new NpgsqlCommand("DELETE FROM users WHERE id=@id", conn);
            cmd.Parameters.AddWithValue("id", id);
            cmd.ExecuteNonQuery();
        }


    }
}