Home Blog Page 2

Memindahkan Project C#-SQL Server Antar Sistem

0

Dalam beberapa kasus, kita mungkin menghendaki memindahkan project C#-SQL Server orang lain dari PC miliknya ke PC milik kita. Harapannya, project tersebut bisa kita jalankan pada sistem milik kita sendiri sehingga kita bisa mempelajarinya atau mengembangkannya.

Mengingat pastinya ada perbedaan sistem, antara PC asal dan PC tujuan, tentu saat baru dipindahkan project tersebut tidak bisa langsung berjalan lancar. Perlu adanya konfigurasi ulang pada project kita tersebut agar sesuai dengan sistem tempat kita berjalan.

Selanjutnya, berikut ini kami rangkumkan langkah-langkah garis besar agar project yang kita pindahkan dapat berjalan lancar. Ada dua konfigurasi mendasar agar project kembali berjalan lancar, yakni konfigurasi SQL Server dan konfigurasi project.

Langkah-Langkah Konfigurasi SQL Server
1. Siapkan file database dari project, biasanya berekstensi .mdf.
2. Memastikan SQL Server sudah berjalan, caranya tekan tombol keyboard : logo Windows + R, pada isian yang muncul tuliskan : services.msc, dan Enter. Cari nama SQL Server, bila statusnya running maka SQL Server sudah berjalan.
3. Buka SQL Server Management Studio dan periksa database di dalamnya. Bila terdapat database dengan nama yang sama dengan nama database yang akan kita pasang, hapus database tersebut. Caranya, klik kanan nama database yang hendak dihapus dan pilih opsi Delete.
4. Buka direktori tempat file database SQL Server di sistem kita. Contohnya, pada sistem yang kami gunakan, direktori tersebut berada pada path :
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQL2024\MSSQL\DATA
Copy file database dari project kita dan paste-kan ke direktori path tersebut.
5. Kembali pada SQL Server Management Studio, klik kanan icon direktori bertuliskan “Databases”, pilih “Attach…”. Pada jendela yang muncul, klik button Add dan pilih file .mdf yang akan kita pasangkan. Jika sudah memilih file mdf dan OK, kita akhiri lagi dengan klik button OK pada window tersebut. Sampai di sini, pemasangan database sudah selesai.

Langkah Konfigurasi Project C#
1. Buka project kita pada visual studio (pada kasus ini, kita menggunakan Visual Studio 2010).
2. Klik menu View->Server Explorer. Buat koneksi ke database SQL Server kita. Dari koneksi yang kita buat ini, kita dapat melihat Connection String pada properties koneksi tersebut. Kita copy Connection String dan amankan, misalnya di-paste-kan di notepad.
3. Buka file app.config project kita pada Solution Explorer.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="_2024_02_19_.Properties.Settings.SchoolCS" connectionString="Data Source=DESKTOP-LG5JEVK\MSSQL2024;Initial Catalog=School;Integrated Security=True"
providerName="System.Data.SqlClient" />

</connectionStrings>
</configuration>

Ganti isi dari connectionString dengan Connection String yang sudah kita amankan tadi.
4. Masih pada Solution Explorer, buka Properties->Setting.settings->Settings.Designer.cs. Cari ekspresi code di bawah :

[global::System.Configuration.DefaultSettingValueAttribute("Data Source=DESKTOP-LG5JEVK\\MSSQL2024;Initial Catalog=School;Integrated Security=True")]

Replace isian DefaultSettingValueAttribute pada kode tersebut dengan Connection String yang telah kita amankan sebelumnya.
5. Selain dua file tersebut, kita juga harus mengganti string koneksi pada tiap windows form yang kita miliki (student, book, peminjaman), yakni pada kode :

public string constring = @"Data Source=DESKTOP-LG5JEVK\MSSQL2024;Initial Catalog=School;Integrated Security=True";

Isikan isi constring dengan mengganti ekspresi code di antara dua petik dengan Connection String yang kita punya.
6. Sampai di sini, proses konfigurasi project secara garis besar sudah selesai dan kita bisa coba untuk menjalankannya. Bila saat run masih dijumpai error, kita bisa melakukan troubleshoot sesuai dengan petunjuk error yang muncul.

Source Code Aplikasi Peminjaman Buku Siswa : LINK

Tugas Kerja : Silakan download source code pada link tersebut. Source code tersebut merupakan update ke-2 dari project kelas yang telah dibahasa pada pertemuan sebelumnya. Setelah didownload, jalankan project dengan menerapkan konfigurasi sesuai dengan prosedur langkah di atas. Backup file exe hasil kompilasi dan kompresi dalam zip.

Link Pengumpulan Hasil Kerja : Upload Hasil Kerja

Restore Database SQL Server

0

Ada suatu waktu di mana kita perlu melakukan restore file database yang pernah kita backup. SQL Server memberikan fasilitas agar kita dapat melakukan restore back up database dengan mudah. File yang perlu kita siapkan adalah file back up DB SQL Server yang berekstensi “.bak”.

Langkah-langkah restore dalam SQL Server secara garis besar adalah sebagai berikut :

  1. Jalankan sistem database SQL Server kita. Pada studi kasus di sini, kami menggunakan SQL Server 2012 dengan lingkungan Windows 10, 64 bit.
  2. Siapkan file backup database yang sekiranya sesuai dengan database yang kita jalankan. Bila sahabat belum memiliki, sahabat bisa mendownload sample basis data dari link berikut : https://www.sqlskills.com/sql-server-resources/sql-server-demos/2012-demo-scripts/. Untuk uji coba kali ini, kami menggunakan sample database Employee.
  3. Esktrak zip/rar file backup database tersebut sehingga kita mendapatkan file berekstensi .bak. Selanjutnya, copy-kan hasil file ekstrak tersebut ke dalam folder “Backup” di direktori SQL Server kita. Contoh direktori yang kami tuju : “C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQL2024\MSSQL\Backup”
  4. Jalankan SQL Server Management Studio
  5. Setelah berhasil masuk, klik kanan icon direktori “Databases”, pilih “Restore Files and Filegroups…”. Muncul jendela yang meminta inputan file backup.
  6. Bila semua inputan sudah diisi, kita klik OK. Jika berjalan lancar maka seharusnya database kita sudah berhasil di-restore.

Untuk melihat proses restore secara langkah per langkah, sahabat dapat mengikuti tayangan video di bawah ini. Selamat mencoba dan terima kasih.

 

Interface: Studi Kasus Input Kontak

0

Dalam bahasa pemrograman C#, sebuah interface adalah sebuah kontrak yang mendefinisikan perilaku atau fungsionalitas yang harus diimplementasikan oleh class. Interface hanya berisi deklarasi metode, properti, event, atau indeks, tetapi tidak menyertakan implementasinya.

Manfaat dari penggunaan interface dalam C# antara lain:

a. Multiple Inheritance
Dalam bahasa pemrograman C#, sebuah kelas dapat mengimplementasikan beberapa interface. Hal ini memungkinkan untuk memperluas fungsionalitas kelas tanpa menggunakan pewarisan berganda

b. Polymorphism
Interface memungkinkan objek untuk diperlakukan secara polimorfik. Artinya, objek dari kelas yang mengimplementasikan sebuah interface dapat diakses menggunakan referensi dari interface tersebut, memungkinkan untuk pengkodean yang lebih fleksibel.

c. Pemisahan Kode
Dengan menggunakan interface, kode dapat dipisahkan menjadi bagian-bagian yang independen. Hal ini memudahkan pengembangan, pemeliharaan, dan pengujian kode.

Latihan: Studi Kasus Input Kontak

Berikut ini adalah contoh source code penggunaan interface dengan basis console. Pada source code ini, kami menyertakan inputan dari user. Silakan diujicoba dan dimodifikasi.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _2024_03_05
{
interface Ikontak {
void identitas();
void nmKontak();
string nomorKontak();
}

class Kontakku : Ikontak {
public void identitas() {
Console.WriteLine("=================================");
Console.WriteLine(" Developed By : Elfay ");
Console.WriteLine("=================================");

}
public void nmKontak() {
string nmnya;
Console.WriteLine("Masukkan nama kontak : ");
nmnya = Console.ReadLine();
}

public string nomorKontak() {
string nmrnya;
Console.WriteLine("Masukkan nomor kontak : ");
nmrnya = Console.ReadLine();
return nmrnya;
}

}

class Program
{
static void Main(string[] args)
{
Kontakku keluarga = new Kontakku();
keluarga.identitas();
keluarga.nmKontak();
keluarga.nomorKontak();

Console.ReadKey();
}
}
}

 

Tugas Kerja

  1. Tambahkan sebuah method bertipe string pada interface tersebut yang berguna untuk menginputkan alamat dari kontak, misal nama method-nya adalah addrKontak atau bisa memilih nama yang lain.
  2. Atur tampilan agar menghasilkan output dengan format semacam : NAMA (NO HP : XXXX), ALAMAT
  3.  Silakan kirimkan (berupa link ATAU upload file – pilih salah satu/boleh dua-duanya) hasil kerja melalui link berikut : https://forms.gle/Nd58YwaJ9WpoBYAj6

 

Interface dalam C#

0

C

ara lain untuk menerapkan potensi abstraksi dalam C# adalah dengan memanfaatkan INTERFACE. Interface sepenuhnya merupakan “kelas abstrak”, yang hanya dapat berisi method abstrak dan properti (dengan isi kosong):

// interface
interface Hewan 
{
void suaraHewan(); // method pada interface (tidak memiliki body)
void berlari(); // method pada interface (tidak memiliki body)
}

Dalam praktiknya, akan lebih baik memulai sebuah nama interface dengan awalan “I” sehingga untuk contoh di atas seharusnya dituliskan IHewan. Cara ini bertujuan untuk lebih memudahkan dalam mendeteksi bahwa bagian tersebut adalah interface. Hal lain yang perlu diingat terkait interface adalah : Interface dapat berisikan properties dan method, tapi tidak berisikan field.

Untuk mengakses method dalam interface, kita harus mengimplementasikan method tersebut melalui kelas yang lain (mirip seperti inheritance). Kelas yang digunakan tersebut dibuat dengan menggunakan simbol “:” sebagaimana inheritance. Di sini, kita tidak perlu menggunakan “override” pada method dalam class tersebut.

// Interface
interface IHewan 
{
void suaraHewan(); // interface method (does not have a body)
}

// Ayam "implements" the IHewan interface
class Ayam : IHewan 
{
public void suaraHewan() 
{
// The body of suaraHewan() is provided here
Console.WriteLine("Suara ayam : kotek kotek petok");
}
}

class Program 
{
static void Main(string[] args) 
{
Ayam ayamku = new Ayam(); // Create an Ayam object
ayamku.suaraHewan();
}
}

Catatan Penting untuk Interface :

  • Sebagaimana class abstract, interface TIDAK BISA digunakan untuk membuat object.
  • Method pada interface tidak memiliki body. Pemasangan body dilakukan pada method yang ada di class lain yang dibuat dari interface tersebut.
  • Pada class yang mengimplementasikan interface, kita harus mengisikan semua method yang ada pada interface.
  • Interface dapat berisikan properties dan method, namun tidak berisi field/ variabel.
  • Anggota interface secara default (bawaan) adalah abstract dan public
  • Sebuah interface tidak dapat mengandung constructor

Studi Kasus yang Lain

Mari kita lihat contoh penggunaan interface dalam C# dengan membuat sebuah interface sederhana yang disebut “IShape”. Interface ini akan memiliki dua method, yaitu “CalculateArea” untuk menghitung luas dan “CalculatePerimeter” untuk menghitung keliling. Kemudian kita akan membuat dua kelas, yaitu “Circle” dan “Rectangle”, yang akan mengimplementasikan interface “IShape”.

Berikut adalah contoh kode untuk interface dan implementasinya:

// Interface
public interface IShape
{
double CalculateArea();
double CalculatePerimeter();
}

// Implementasi untuk Circle
public class Circle : IShape
{
public double Radius { get; set; }

public double CalculateArea()
{
return Math.PI * Radius * Radius;
}

public double CalculatePerimeter()
{
return 2 * Math.PI * Radius;
}
}

// Implementasi untuk Rectangle
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }

public double CalculateArea()
{
return Width * Height;
}

public double CalculatePerimeter()
{
return 2 * (Width + Height);
}
}

Dalam contoh di atas, kita telah membuat sebuah interface “IShape” yang memiliki method “CalculateArea” dan “CalculatePerimeter”. Selanjutnya, kita membuat dua kelas, yaitu “Circle” dan “Rectangle”, yang mengimplementasikan interface tersebut dengan cara mengimplementasikan method-method yang ada di dalam interface.

Dengan menggunakan interface, kita dapat dengan mudah mengatur bahwa setiap kelas yang mengimplementasikan interface “IShape” harus memiliki method “CalculateArea” dan “CalculatePerimeter”. Hal ini memungkinkan untuk membuat kode yang lebih fleksibel dan mudah untuk dikelola, karena kita dapat dengan mudah mengganti implementasi dari suatu kelas tanpa perlu mengubah kodenya secara luas.

Tugas Kerja :
Buatlah interface bernama ISiswa dengan method “identitasSiswa” dan “prestasiSiswa”. Berikan body (isi) pada tiap-tiap method tersebut dan tampilkan hasilnya. Upload hasil kerja dalam bentuk file ATAU link code pada LINK BERIKUT : https://forms.gle/4k7ToVUcKd5AXHgTA

Membuat Input Berbasis WinForm C# dan DB SQL Server

0

Pada kesempatan kali ini, kita akan belajar membuat prosedur input, edit dan delete data sederhana dengan WinForm C# dan SQL Server. Studi kasus yang digunakan adalah input data siswa. Dalam uji coba ini, kita menggunakan Visual Studio 2010 dan SQL Server 2012.

Sebelum memulai, kita hendaknya sudah memastikan bahwa Ms. Visual Studio kita dan SQL Server telah berjalan dengan baik. Selanjutnya, kita persiapkan database-nya di SQL Server terlebih dahulu melalui SQL Server Management Studio.

Pertama, kita buat database bernama “School” di dalam SQL Server melalui SQL Server Management Studio. Setelah itu, di dalamnya, kita membuat tabel bernama “Student” dengan struktur sebagaimana dengan gambar di bawah.

Selanjutnya, sebagai record tabel “Student”, kita masukkan beberapa data sampel untuk uji coba nantinya. Inputan yang dimasukkan silakan sesuaikan dengan kebutuhan.

Apabila sudah selesai, kita berpindah ke Ms. Visual Studio dan membuat project berbasis Windows Form di sana. Silakan pilih nama project sesuai dengan selera masing-masing. Adapun struktur GUI atau tampilan window yang kita buat adalah sebagaimana gambar di bawah ini.

Secara garis besar, komponen yang kita butuhkan antara lain :

  1. TextBox : NISN, Nama Siswa, Tempat Lahir, Alamat, dan No. Hp
  2. ComboBox : Jenis Kelamin (Diisi pilihan “Laki-Laki” dan “Perempuan”), Status (Diisi pilihan “Active” dan “Inactive”)
  3. DateTimePicker : Tanggal Lahir
  4. DataGridView : Tabel untuk menampilkan data siswa

Untuk datagridview, agar kolom tabel dari database-nya tampil dan bisa kita sesuaikan judul headernya, kita perlu menghubungkannya dengan data source yang terkoneksi dengan data di SQL Server.

Berikut source code lengkap pada winform input “Student” ini beserta komponen yang ada di dalamnya. Silakan sesuaikan dengan nama komponen-komponen yang ada pada winform masing-masing.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace _2024_02_19_
{
public partial class Student : Form
{
//public string constring = @"Data Source=LENOVO-PC;Initial Catalog=School;Integrated Security=True";
public string constring = @"Data Source=DESKTOP-LG5JEVK\MSSQL2024;Initial Catalog=School;Integrated Security=True";

public Student()
{
InitializeComponent();
}

private void btnInsert_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("insert into Student values (@nisn,@nama,@jk,@bp,@bd,@addr,@hp,@stat)", con);
cmd.Parameters.AddWithValue("@nisn", txtNisn.Text);
cmd.Parameters.AddWithValue("@nama", txtNama.Text);
cmd.Parameters.AddWithValue("@jk", cbJk.Text);
cmd.Parameters.AddWithValue("@bp", txtBp.Text);
cmd.Parameters.AddWithValue("@bd", DateTime.Parse(dateTimePicker1.Text));
cmd.Parameters.AddWithValue("@addr", txtAddr.Text);
cmd.Parameters.AddWithValue("@hp", txtHp.Text);
cmd.Parameters.AddWithValue("@stat", cbStatus.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Rekam Data Berhasil.");
txtNisn.Text = "";
txtNama.Text = "";
cbJk.Text = "";
txtBp.Text = "";
dateTimePicker1.Text = "";
txtAddr.Text = "";
txtHp.Text = "";
cbStatus.Text = "";

}

private void btnShow_Click(object sender, EventArgs e)
{
//Menampilkan data dari tabel Student ke dataGridView
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM Student", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}

private void Student_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'schoolDS_Student.Student' table. You can move, or remove it, as needed.
this.studentTableAdapter.Fill(this.schoolDS_Student.Student);
// TODO: This line of code loads data into the 'schoolDataSet.Student' table. You can move, or remove it, as needed.

}

private void btnDelete_Click(object sender, EventArgs e)
{// Kode pada Button untuk menghapus data pada tabel Student
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("Delete Student Where nisn=@nisn", con);
cmd.Parameters.AddWithValue("@nisn", txtNisn.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Penghapusan Data Berhasil.");

}

private void btnUpdate_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("update Student set nmStud=@nama,jkStud=@jk,bpStud=@bp,bdStud=@bd,addrStud=@addr,hpStud=@hp,statStud=@stat where nisn=@nisn", con);

cmd.Parameters.AddWithValue("@nisn", txtNisn.Text);
cmd.Parameters.AddWithValue("@nama", txtNama.Text);
cmd.Parameters.AddWithValue("@jk", cbJk.Text);
cmd.Parameters.AddWithValue("@bp", txtBp.Text);
cmd.Parameters.AddWithValue("@bd", DateTime.Parse(dateTimePicker1.Text));
cmd.Parameters.AddWithValue("@addr", txtAddr.Text);
cmd.Parameters.AddWithValue("@hp", txtHp.Text);
cmd.Parameters.AddWithValue("@stat", cbStatus.Text);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Update Data Berhasil.");
txtNisn.Text = "";
txtNama.Text = "";
cbJk.Text = "";
txtBp.Text = "";
dateTimePicker1.Text = "";
txtAddr.Text = "";
txtHp.Text = "";
cbStatus.Text = "";
}

private void btnSearch_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("Select * from Student where nisn=@nisn", con);
cmd.Parameters.AddWithValue("@nisn", txtNisn.Text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
txtNisn.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
txtNama.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
cbJk.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
txtBp.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
dateTimePicker1.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();

txtAddr.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
txtHp.Text = dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString();
cbStatus.Text = dataGridView1.Rows[e.RowIndex].Cells[7].Value.ToString();
}
}
}

Link Unduh SOURCE CODE PROJECT

 

Instalasi SQL Server 2012

0

SQL Server 2012 adalah sistem manajemen basis data relasional (RDBMS) yang dikembangkan oleh Microsoft. Sebagai aplikasi database server, SQL Server merupakan produk perangkat lunak yang bersifat client/server karena memiliki komponen client yang berfungsi menampilkan dan memanipulasi data. Selain itu, RDBMS ini mempunyai komponen server yang berfungsi menyimpan, memanggil, dan mengamankan database. SQL Server menggunakan SQL sebagai bahasa utama dalam mengoperasikan database.

Versi Visual Studio yang kompatibel dengan SQL Server 2012 adalah Visual Studio 2010. Visual Studio 2010 dapat digunakan untuk mengembangkan solusi analisis data dan bisnis menggunakan layanan SQL Server seperti SQL Server Analysis Services, Reporting Services, dan Integration Services. Pada versi SQL Server 2012 dan setelahnya, IDE ini telah berganti nama menjadi SQL Server Data Tools (SSDT)

Untuk melakukan instalasi SQL Server 2012, kita dapat mengikuti langkah-langkah berikut:

  1. Unduh file instalasi SQL Server 2012 dari situs resmi Microsoft.
  2. Jalankan file setup yang telah diunduh.
  3. Pilih opsi “New SQL Server stand-alone installation or add feature to an existing installation”.
  4. Setelah itu, program setup akan memeriksa pembaruan yang tersedia untuk SQL Server. Klik “Next” untuk melanjutkan.
  5. Tunggu beberapa saat hingga program setup menyelesaikan instalasi file yang diperlukan.
  6. Pada halaman “Instance Configuration”, Anda dapat memberikan nama instance sesuai keinginan Anda. Klik “Next” untuk melanjutkan.
  7. Pada halaman “Feature Selection”, pilih fitur-fitur yang ingin Anda instal. Anda juga dapat memilih direktori instalasi yang diinginkan. Klik “Next” untuk melanjutkan.
  8. Pada halaman “Server Configuration”, tentukan akun layanan yang akan digunakan untuk menjalankan SQL Server. Anda juga dapat mengatur mode keamanan dan mengkonfigurasi pengaturan jaringan. Klik “Next” untuk melanjutkan.
  9. Pada halaman “Database Engine Configuration”, Anda dapat mengatur pengaturan tambahan untuk database engine. Anda dapat memilih mode autentikasi, mengatur pengaturan collation, dan mengkonfigurasi pengaturan file dan direktori. Klik “Next” untuk melanjutkan.
  10. Setelah itu, program setup akan memvalidasi konfigurasi yang telah Anda tentukan. Jika tidak ada masalah, klik “Next” untuk melanjutkan.
  11. Tunggu proses instalasi hingga selesai.
  12. Setelah instalasi selesai, Anda dapat menutup program setup.

Dengan mengikuti langkah-langkah di atas, kita dapat menginstal SQL Server 2012 dengan mudah. Disamping itu, kita juga perlu aktif memeriksa panduan instalasi resmi dan memahami persyaratan sistemnya.

Di bawah ini, video contoh proses instalasi SQL Server 2012 pada lingkungan sistem operasi Windows 7.

Sya’ban Bulan Shalawat Kepada Baginda Nabi

0

وذكرَ ابنُ الصيفِ اليمَنيّ أنه قيل أن شهرَ شعبانَ شهرُ الصلاةِ على النبيِّ صلَّى اللّٰه عليه وسلَّم لأن الآيةَ إِنَّ اللّٰهَ وَمَلآئِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَآ أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا نُزلتْ فيه نقَلَه الإمامُ العلاَّمةُ الشهابُ القَسطلانِيّ في فضلِ الصلاةِ على النبيِّ صلَّى اللّٰه عليه وسلَّم. وقد ذكرَ الحافظُ ابنُ حجرٍ رضي الله عنه عن أبي ذرٍّ الهرَويّ أن الأمرَ بالصلاةِ على النبيِّ صلَّى اللّٰه عليه وسلَّم يَعنِي بقولِه تعالى يَآ أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ الآيةَ كان في السنةِ الثانيةِ من الهجْرةِ وقيل في ليلةِ الإسراء إه

Syaikh Ibn al-Shaif al-Yamani menuturkan bahwa menurut sebuah pendapat bulan Sya’ban merupakan bulan bershalawat kepada Nabi shallallahu ‘alaihi wasallam, karena ayat:

إِنَّ اللّٰهَ وَمَلآئِكَتَهُ يُصَلُّونَ عَلَى النَّبِيِّ يَآ أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا

“Sesungguhnya Allah dan malaikat-malaikat-Nya bershalawat untuk Nabi. Hai orang-orang yang beriman, bershalawatlah kamu untuk Nabi dan ucapkanlah salam penghormatan kepadanya.” (QS al-Ahzab: 56).

diturunkan pada bulan Sya’ban. Sebagaimana dikutip dari pendapatnya Imam al-‘allamah Syihab al-Din al-Qasthalani (851-923 H) dalam menjelaskan keutamaan bershalawat kepada Nabi shallallahu ‘alaihi wasallam. Al-Hafidh Ibn Hajar al-‘Asqalani (1372-1449 M) menuturkan riwayat dari Syaikh Abu Dzarr al-Harawi (946-1042 M),  bahwa perintah bershalawat kepada Nabi shallallahu ‘alaihi wasallam, yakni ayat:

يَآ أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا عَلَيْهِ

“Hai orang-orang yang beriman, bershalawatlah kamu kepada Nabi…”

terjadi pada tahun kedua hijriyah. Sementara pendapat yang lain terjadi pada malam isra’ mi’raj.

Wallahu a’lam bisshawab.

Sumber: Tuhfah al-Ikhwan fi Qiraah al-Mi’ad fi Rajab wa Sya’ban wa Ramadlan karya al-Imam al-‘Allamah Syihab al-Din Ahmad ibn Hijazi al-Fasyani (w. 978 H/1570 M), Mathba’ah al-Kastiliyah Mesir, 1286 H, hal. 65.

(KH. Bagus Ahmadi, PP. MIA Putra – Pacet – Moyoketen – Boyolangu – Tulungagung. Ahad, 11 Februari 2024)

Asal Muasal Bacaan Tasyahud

0

فقد رُوي أنه صلَّى اللّٰه عليه وسلَّم لما جاوزَ سدرةَ المُنتهى ليلةَ الإسراءِ غَشِيَتْه سَحابةٌ من نورٍ، فيها من الألوانِ ما شاء الله. فوقفَ جبريلُ ولم يَسرِ معه، فقال له صلَّى اللّٰه عليه وسلَّم أتترُكنِي أسِيرُ منفردًا؟ فقال له جبريلُ: وما منا إلا له مقامٌ معلومٌ. فقال النبي صلَّى اللّٰه عليه وسلَّم: سِرْ مَعي ولو خطوةً. فسارَ معه خطوةً فكاد أن يحترقَ من النورِ والجلالِ والهيبةِ، وصغرَ وذابَ حتى صار قدرَ العُصفورِ، فأشارَ على النَّبيِّ بأن يُسلِّمَ على ربِّه إذا وصَل مكانَ الخطابِ. فلما وصَل النبيُّ إليه قال: التَّحِيَّاتُ المُبَارَكاتُ الصَّلَواتُ الطَّيِّبَاتُ للّٰهِ. فقال اللّٰه تعالى: السلامُ عليكَ أيها النبيُّ ورحمةُ اللّٰهِ وبرَكاتُه. فأحبَّ النبيُّ أن يكونَ لِعبادِ اللّٰهِ الصالِحِينَ نصيبٌ من هذا المقامِ، فقال: السَّلامُ علينا وعلى عبادِ اللّٰهِ الصَّالحِينَ. فقال جميعُ أهلِ السَّمٰواتِ: أشهدُ أن لا إلٰهَ إلا اللّٰهُ وأشهدُ أنَّ مُحمَّدًا رسولُ اللّٰهِ

Diriwayatkan dalam hadist bahwa sesungguhnya Baginda Rasulullah Shallallahu ‘alaihi wasallam ketika sudah melewati Sidratul Muntaha pada saat malam Isra,’ beliau terselubungi oleh kabut-mendung dari cahaya. Di dalamnya terdapat warna-warni (yang teramat indah, dan sulit digambarkan) sesuai dengan apa yang dikehendaki Allah Subhanahu wa ta’ala. Kemudian Jibril ‘alaihis salam berhenti dan tidak melanjutkan perjalanan bersama beliau. Lantas Baginda Nabi shallallahu alaihi wasallam bertanya: “Apakah engkau akan meninggalkan aku berjalan sendirian?” Jibril ‘alaihis salam menjawab: “Aku tidak sanggup. Aku hanya mampu pada maqamku saja”. Nabi shallallahu alaihi wasallam berkata: “Berjalanlah bersamaku walau satu langkah.” Jibril ‘alaihis salam pun berjalan bersama beliau satu langkah. Akan tetapi ia terbakar oleh cahaya,  keagungan dan kehebatan Allah. Akibatnya, ia luntuh mengecil hingga menjadi sebesar burung emprit. Kemudian malaikat Jibril ‘alaihis salam memberi isyarat kepada Baginda Nabi shallallahu ‘alaihi wasallam untuk mengucapkan salam kepada Allah jika beliau sudah sampai di tempat untuk “matur” kepada Allah. Selanjutnya, ketika Baginda Nabi shallallahu alaihi wasallam sampai di tempat tersebut, beliau “matur”:

التَّحِيَّاتُ المُبَارَكاتُ الصَّلَواتُ الطَّيِّبَاتُ للّٰهِ.

“Segala kehormatan, dan keberkahan, kebahagiaan dan kebaikan itu milik Allah”.

Allah ta’ala lalu berfirman:

السلامُ عليكَ أيها النبيُّ ورحمةُ اللّٰهِ وبرَكاتُه

“Keselamatan atas Nabi (Muhammad), juga rahmat dan berkahnya”.

Nabi shallallahu ‘alaihi wasallam senang jika para hamba yang shaleh termasuk dalam maqam ini, sehingga beliau memohon:

السَّلامُ علينا وعلى عِبادِ اللّٰهِ الصَّالحِينَ.

“Semoga keselamatan dicurahkan kepada kami dan atas hamba-hamba Allah yang shaleh”.

Setelah itu, seluruh penduduk langit mengucapkan:

أشهدُ أن لا إلٰهَ إلا اللّٰهُ وأشهدُ أنَّ مُحمَّدًا رسولُ اللّٰهِ

“Aku bersaksi tidak ada sesembahan yang berhak disembah kecuali Allah. Dan aku bersaksi bahwa Nabi Muhammad adalah utusan Allah”.

Wallahu a’lam bisshawab.

Sumber: Hasyiyah I’anah al-Thalibin ‘ala Fath al-Mu’in, karya al-‘Allamah Sayyid Abu Bakar Syatha (Sayyid Bakri) bin Sayyid Muhammad Syatha al-Dimyathi al-Makki al-Syafi’i, 1848-1892 M, Maktabah Thaha Putra Semarang, juz I hal. 169.

(KH. Bagus Ahmadi, PP. MIA Putra – Pacet – Moyoketen – Boyolangu – Tulungagung. Sabtu, 10 Februari 2024)

Mengapa Terjadi Mi’raj ke Langit?

0

حكمة – قال عثمانُ بن حسنٕ الجُوَيرِي فى دُرّةِ الواعظينَ: وأما سببُ المعراجِ فهو أن الأرضَ افتخَرتْ على السماءِ فقالت الأرضُ: أنا خيرٌ منكِ لأن اللهَ تعالى زيَّني بالبلادِ والبحارِ والأنهارِ والأشجارِ والجِبالِ وغيرِها فقالت السماءُ: أنا خيرٌ منكِ لأن الشمسَ والقمرَ والكواكبَ والأفلاكَ والبُروجَ والعرشَ والكُرْسيَّ والجَنةَ فِيَّ، وقالت الأرضُ: فِيَّ بيتٌ يزُورُه ويَطوفُ به الأنبياءُ والمُرسلون والأولياءُ والمؤمنونُ عامَّةً، وقالت السماءُ: فيَّ البيتُ المعمورُ يطوفُ به ملائكةُ السمواتِ وفيَّ الجنةُ التى هى مأوَى أرْواحِ الأنبياءِ والمرسلينَ وأرواحِ الأولياءِ والصالحينَ وقالت الأرضُ: إن سيِّدَ المرسلينَ وخاتمَ النبيِّينَ وحبيبَ ربِّ العالَمِين وأفضلَ الموجوداتِ عليه أكملُ التَّحيَّاتِ وطنَ فيَّ وأجْرَى شريعتَه عليَّ، فلما سمعتْ السماءُ هذا عجَزَتْ وسكتَتْ عن الجوابِ وتوجَّهتْ إلى اللهِ تعالى فقالت: إلٰهِي أنتَ تُجيبُ المُضطَرَّ إذا دَعاك وأنا عجزتُ عن جوابِ الأرضِ فأسألُكَ أن يصعدَ محمدًا لى فأتشَرَّفُ به كما تشرَّفتْ الأرضُ بجمالِه وافتخرتُ، فأجابَ دَعوَتَها.

(Hikmah) Syaikh Usman bin Hasan al-Jubairi berkata dalam kitab Durrah al-Wa’idhin, “Sebab terjadinya mi’raj adalah bahwa bumi bersikap sombong terhadap langit. Bumi berkata kepada langit, ‘Aku lebih baik daripadamu karena Allah telah menghiasiku dengan daratan, lautan, sungai, pepohonan, pegunungan, dan lain-lain.’ Langit menjawab, ‘Aku yang lebih baik daripadamu karena matahari, bulan, bintang-bintan, cakrawala, buruj, ‘Arsy, Kursi, dan surga ada padaku.’ Bumi berkata seraya tidak mau kalah, ‘Aku mempunyai sebuah bait atau Ka’bah yang dikunjungi dan dikelilingi oleh para nabi, rasul, wali, dan seluruh orang-orang mukmin.’ Langit menjawab, ‘Aku juga punya Baitul Makmur yang dikelilingi oleh para malaikat langit. Selain itu, aku juga memiliki surga yang merupakan tempat bagi arwah para nabi, rasul, wali, dan seluruh orang-orang shalih.’ Kemudian bumi tidak mau kalah, ‘Sesungguhnya pemimpin para rasul, penutup para nabi, kekasih Allah Yang merajai seluruh alam, makhluk yang paling utama, semoga kesempurnaan penghormatan selalu tercurah atasnya, menempatiku dan syariatnya berlaku diatasku.’ Mendengar perkataan bumi ini, langit tidak bisa membantah dan diam. Kemudian langit menghadap dan memohon kepada Allah seraya berkata, ‘Ya Tuhanku! Engkau adalah Dzat yang mengabulkan permintaan makhluk lemah ketika ia berdoa kepada-Mu. Aku tidak mampu membantah perkataan bumi. Aku mohon kepada-Mu agar membawa naik Muhammad kemari sehingga aku bisa merasa lebih mulia dengannya sebagaimana bumi menjadi mulia dengan keindahannya. Dengan demikian, aku bisa menjawab perkataan bumi.’ Kemudian Allah mengabulkan doa langit.

Wallahu a’lam bisshawab.

Sumber: Nur al-Dhallam Syarh ‘Aqidah al-‘Awam karya Syaikh Muhammad Nawawi al-Bantani al-Jawi, Maktabah al-Turmusi li al-Turats, 2017, hal. 105-106.

(KH. Bagus Ahmadi, PP. MIA Putra – Pacet – Moyoketen – Boyolangu – Tulungagung. Kamis, 8 Februari 2024)

Abstraksi dalam C#

0

Dalam pemrograman, abstraksi adalah konsep penting yang digunakan untuk menyembunyikan detail implementasi dan fokus pada fitur yang penting. Dalam bahasa pemrograman C#, abstraksi memungkinkan kita untuk membuat kelas abstrak dan metode abstrak yang harus diimplementasikan oleh kelas turunannya.

Abstraksi merupakan cara untuk memusatkan perhatian pada fitur yang penting dan menyembunyikan detail yang rumit. Dalam konteks pemrograman, abstraksi memungkinkan kita untuk membuat kerangka kerja umum yang dapat digunakan kembali, sementara detailnya diimplementasikan di kelas turunan.

Mari kita lihat contoh sederhana tentang bagaimana abstraksi dapat diterapkan dalam bahasa pemrograman C#:

using System;

abstract class Hewan
{
public abstract void Suara();
}

class Kucing : Hewan
{
public override void Suara()
{
Console.WriteLine("Meong!");
}
}

class Anjing : Hewan
{
public override void Suara()
{
Console.WriteLine("Guk guk!");
}
}

class Program
{
static void Main(string[] args)
{
Hewan kucing = new Kucing();
Hewan anjing = new Anjing();

kucing.Suara(); // Output: Meong!
anjing.Suara(); // Output: Guk guk!
}
}

Dalam contoh di atas, kita memiliki kelas abstrak Hewan yang memiliki metode abstrak Suara(). Metode ini tidak memiliki implementasi, tetapi mendefinisikan perilaku yang harus diimplementasikan oleh kelas turunannya.

Kita kemudian membuat kelas turunan Kucing dan Anjing yang mewarisi dari kelas Hewan. Kedua kelas ini mengimplementasikan metode Suara() sesuai dengan suara yang dihasilkan oleh masing-masing hewan.

Ketika kita memanggil metode Suara() pada objek Kucing dan Anjing, masing-masing objek akan menggunakan implementasi khususnya. Ini adalah contoh abstraksi dalam C#.

Abstraksi dalam pemrograman C# memiliki beberapa manfaat, di antaranya :

  • Mengurangi kompleksitas: Abstraksi memungkinkan kita untuk fokus pada fitur penting tanpa harus memikirkan detail implementasi yang rumit.
  • Reusabilitas kode: Dengan menggunakan abstraksi, kita dapat membuat kerangka kerja umum yang dapat digunakan kembali untuk membuat kelas turunan dengan perilaku yang berbeda.
  • Pemeliharaan yang mudah: Dengan memisahkan fungsionalitas umum dari detail implementasi, perubahan pada satu bagian tidak akan mempengaruhi bagian lain yang terkait.

 

Pranala Luar : C# Abstraction at w3school

- Advertisement -

Recent Posts