• Tidak ada hasil yang ditemukan

ASP.NET Core MVC & MySQL

Pada bab ini akan dijelaskan bagaimana cara melakukan koneksi dan operasi ke database MySQL dari aplikasi ASP.NET Core. Aplikasi yang dibuat adalah pengelolaan buku tamu (guest book). Akan digunakan form input data guest book yang telah dibuat sebelumnya. Kemudian akan ditambahkan kode untuk menyimpan nilai yang diisi pada form guest book ke dalam database MySQL. Dan juga akan ditampilkan data yang telah disimpan di dalam database ke halaman web.

MySQL Data Core

Membuat Project

Untuk latihan ini akan dibuat project baru dengan nama MyCoreGuestBook dengan perintah berikut ini.

dotnet new web -o MyCoreGuestBook

Kemudian modifikasi isi file MyCoreGuestBook.csproj agar isinya sama dengan file BelajarASPNETCoreMVC.csproj yang telah dibuat pada sub bab sebelumnya.

Selanjutnya modifikasi isi file Startup.cs dengan isi yang sama dengan file Startup.cs pada project BelajarASPNETCoreMVC. Setelah itu sesuaikan namespace yang digunakan pada file Startup.cs menjadi MyCoreGuestBook.

Kemudian salin folder Models, Controllers dan View berserta file-file didalamnya. Dan modifikasi nilai namespace yang digunakan pada setiap file-file tersebut agar menjadi MyCoreGuestBook.

Persiapan

Membuat Tabel

Untuk menyimpan data buku tamu diperlukan tabel pada database. Berikut ini adalah script SQL untuk membuat tabel buku_tamu.

create table guestbooks(

guestbook_id INT NOT NULL AUTO_INCREMENT, guest_name VARCHAR(100) NOT NULL,

guest_email VARCHAR(100) NOT NULL, message VARCHAR(256) NOT NULL, PRIMARY KEY ( guestbook_id ) );

Eksekusi script di atas pada Visual Studio code dengan cara yang telah diberikan pada bab Persiapan Database MySQL > Eksekusi Query.

66

Modifikasi File MyCoreGuestBook.csproj

Langkah selanjutnya adalah melakukan modifikasi file MyCoreGuestBook.csproj. Akan ditambahkan library MySql.Data.Core. Library ini berisi class dan method-method untuk mengakses database MySQL.

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot\" /> </ItemGroup> <ItemGroup>

<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />

<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0"/> <PackageReference Include="MySql.Data.Core" Version="7.0.4-IR-191" />

</ItemGroup>

</Project>

Cara menambahkan library MySql.Data.Core dapat dilihat pada baris cetak tebal. Setelah file MyCoreGuestBook.csproj disimpan maka akan ada proses restore yang dilakukan oleh Visual Studio Code.

Membuat File appsettings.json

Untuk menyimpan variable yang dapat digunakan pada aplikasi web maka variable tersebut dapat disimpan pada suatu file. Sebagai contoh, variable yang menyimpan connection string database. Tapi sebelumnya terlebih dahulu file appsettings.json perlu dibuat di dalam folder project BelajarASPNETCoreMVC. Setelah itu tuliskan variable seperti contoh di bawah ini.

{

"ConnectionStrings": {

"Default": "server=localhost; userid=root;

password=rahasia; database=elibrary; SslMode=None"

} }

Perhatian:

Baris section Default yang berisi connection string harus ditulis dalam satu baris tanpa terpotong oleh enter seperti pada contoh di atas. Contoh di atas ditulis dengan tujuan agar mudah dibaca di buku ini.

Modifikasi File Startup.cs

Tujuan memodifikasi file Startup.cs adalah untuk membuat property statik yang akan menyimpan nilai dari nilai connection string yang ditulis pada file appsettings.json. Langkah pertama adalah menambahkan baris berikut ini.

67 Baris ini bertujuan untuk penggunaan class Configuration. Langkah kedua adalah menambahkan property static ConnectionString sehingga property ini dapat diakses oleh seluruh class di dalam project. Selain itu juga ditambahkan provider Configuration yang dapat digunakan untuk membaca file konfigurasi.

public static string ConnectionString {get; private set;} public static IConfigurationRoot Configuration { get; set; }

Selanjutnya menambahkan method Startup seperti berikut ini.

public Startup(IHostingEnvironment env) {

var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath)

.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables();

Configuration = builder.Build();

ConnectionString = Configuration.GetConnectionString("Default"); }

Pada bagian pertama method ini berfungsi untuk menentukan nama dan lokasi dari file konfigurasi yang akan dibaca. Dapat dilihat jika file yang akan dibaca adalah appsettings.json. Sedangkan pada baris terakhir digunakan provider Configuration untuk membaca nilai Default pada section ConnectionStrings pada file appsettings.json.

Berikut adalah isi lengkap file Startup.cs.

Startup.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; namespace MyCoreGuestBook {

public class Startup {

public static string ConnectionString {get; private set;} public static IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env)

{

var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath)

.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); Configuration = builder.Build(); ConnectionString = Configuration.GetConnectionString("Default"); }

// This method gets called by the runtime. Use this method to add services to the container.

// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940

public void ConfigureServices(IServiceCollection services) {

68

services.AddMvc(); }

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

{ loggerFactory.AddConsole(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } } }

Dokumen terkait