Cara menghubungkan database mysql di asp net mvc

Atau klik kanan proyek Anda, pilih Kelola Paket NuGet…, di kotak Pencarian masukkan MySqlConnector, dan instal paket di proyek Anda

2. Tali Sambungan

String koneksi tipikal untuk MySQL adalah

Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE

Ganti nilai dalam string tersebut dengan pengaturan yang sesuai untuk database Anda. Untuk pengaturan lebih lanjut, lihat Opsi Koneksi

Jika Anda menggunakan ASP. NET Core, string koneksi Anda biasanya akan disimpan di appsettings.json

{
  ....
  "ConnectionStrings": {
    "Default": "Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE"
  }
}
_

3. Konfigurasi Layanan (ASP. inti bersih)

BERSIH 6. 0

Jika menggunakan ASP. NET Core, Anda ingin mendaftarkan koneksi database di Program.cs

builder.services.AddTransient(_ =>
    new MySqlConnection(builder.Configuration.GetConnectionString["Default"]));

BERSIH 5. 0 dan sebelumnya

Untuk. BERSIH 5. 0 dan sebelumnya, daftarkan koneksi database di

Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE
0

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddTransient(_ => new MySqlConnection(Configuration["ConnectionStrings:Default"]));
}
_

4. Buka dan Gunakan Koneksi

Di ASP. NET Core, objek

Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE
_1 akan disuntikkan ketergantungan ke kelas
Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE
2 Anda. Untuk jenis proyek lain, Anda mungkin perlu membuat sambungan secara eksplisit

Artikel ini menunjukkan cara menyambung ke MySql tanpa ORM saat menggunakan Visual Studio Express 2013 untuk ASP. Pengembangan .NET MVC

  • Unduh proyek sumber - 5. 9MB

Objektif

Tujuan artikel ini adalah mendemonstrasikan cara menggunakan database MySQL dengan ASP. NET MVC menggunakan Microsoft Visual Studio Express untuk Web tanpa ORM seperti Nhibernate atau EntityFramework. Contohnya akan mencakup membaca dalam gambar

Contoh Asal

Contohnya didorong oleh sistem tiket desktop yang sedang saya kerjakan di mana akan ada akses online terbatas ke subset dari fitur-fiturnya. Sistem ini memiliki 30 rakitan penanganan meja khusus. Antarmuka online akan terbatas pada pendaftaran penumpang, pembelian tiket, pembayaran, dan pertanyaan penumpang

Karena saya menggunakan produk Express, penelitian awal menunjukkan bahwa koneksi ke MySQL tidak memungkinkan. Kursus Nelson LeQuet tentang hal ini tersedia melalui Udemy atau 3DBuzz. Nelson menggunakan kombinasi Nhibernate / FlusentMigrator untuk situsnya, dan saya sangat merekomendasikan rangkaian teknologi ini untuk pengembangan baru. Alih-alih memberi saya ikan, Nelson mengajari saya cara memasang garis itu, jadi saya memulai ASP baru. Proyek NET MVC, menambahkan MySQL yang sama. Pustaka data yang saya gunakan dalam pengembangan desktop, menarik ruang nama yang sama, melakukan panggilan seolah-olah dalam mode desktop dan itu dia - koneksi yang berfungsi ke MySQL dari dan ASP. Situs .NET MVC ditulis menggunakan Microsoft Visual Studio Express

Selain tidak menunjukkan cara menyiapkan proyek pengujian menggunakan Test Explorer, mereka semua terbatas pada pengujian contoh formulir tunggal di mana formulir yang disajikan terkait dengan proses yang dipanggil. Dalam contoh saya, formulir yang terkait dengan proses yang akan saya panggil muncul di tempat ketiga

Persembahan saya di sini sebagian besar berasal dari sumber materi yang luar biasa ini, yang mendasar untuk saya mulai

  • [LEQUET] - "ASP komprehensif. NET MVC oleh Nelson LeQuet dari Udemy
  • [FREEMAN] - "Pro ASP. NET oleh Adam Freeman dari Apress

[FREEMAN] membantu saya, tetapi contoh ini menggunakan Entity Framework dan Sql Server. Saya gagal melihat bagaimana saya bisa mengabaikan aspek EF, dan tidak bisa mendapatkan koneksi MySQL yang berfungsi dari apa yang saya pelajari di sini. Meskipun demikian, buku favorit saya tentang masalah ini

[LEQUET] memberikan alternatif untuk EntityFramework di Nhibernate, dan contohnya ditata sedemikian rupa untuk melihat bagaimana mungkin untuk melanjutkan tanpa ORM apa pun. Dalam kursus ini juga terdapat paparan sumber daya unggulan lainnya seperti FluentMigrator, Bcrypt, Bootstrap, Elmah, Git, dan WebDeploy

Teks berikut menunjukkan cara membuat koneksi tersebut bekerja pada ASP dasar. halaman .NET MVC

Memperkenalkan contoh aplikasi

Aplikasi sampel adalah halaman web sepele yang membaca dan ID, Nama, Alamat, dan Gambar dari tabel bernama PersonMaster. Anda dapat menggantinya dengan kombinasi kolom/tabel di salah satu database Anda saat menjalankannya

Kode Sumber disertakan

Saya telah memasukkan ASP. Proyek .NET MVC tempat saya membuat koneksi kerja. Itu tidak akan berfungsi 'di luar kotak' karena Anda tidak akan memiliki database yang sama di sisi Anda. Gunakan tabel apa pun pada database yang ada di kelas cPerson dan Anda harus melakukannya dengan baik

Mulai

Buka Microsoft Visual Studio Express for Web dan buat proyek baru, pilih ASP. Aplikasi Web .NET MVC seperti yang diilustrasikan

Cara menghubungkan database mysql di asp net mvc

Selanjutnya, pilih templat kosong, biarkan mesin tampilan sebagai Razor, dan jangan memilih untuk membuat proyek uji

Cara menghubungkan database mysql di asp net mvc

Pilih kontrol kode sumber pilihan Anda (atau tidak sama sekali)

Mengkodekan Solusi

Buka Web. Konfigurasi untuk proyek dan sertakan ConnectionStrings setelah konfigurasi/pengaturan aplikasi tepat sebelum sistem. web

  ?<connectionStrings?>
  ?<add name="MySQLConnection"
  connectionString="Server=localhost;
                    user id=root;
                    password=myrootpass;
                    persist security info=True;
                    database=mytestdb"
  providerName="System.Data.SqlClient" /?>
?</connectionStrings?>

Karena kami memilih template kosong, tidak ada halaman yang akan dirender. Di Solution Explorer tambahkan folder bernama Home ke folder Views

Cara menghubungkan database mysql di asp net mvc

Klik kanan pada folder Home yang baru, dan pilih Add, lalu View dari menu pop up. Beri nama tampilan baru Anda 'Index', biarkan mesin sebagai 'Razor' dan bersihkan ketiga kotak centang seperti yang ditunjukkan di sini

Cara menghubungkan database mysql di asp net mvc

Ini akan membuat modul baru bernama Index. cshtml. Ganti kode yang dibuat secara otomatis di dalamnya dengan yang berikut ini

@model Razor.Models.cPerson
@{
    Layout = null;
}
?<!DOCTYPE html?>
?<html?>
?<head?>
    ?<meta name="viewport" content="width=device-width" /?>
    ?<title?>Index?</title?>
?</head?>
?<body?>
    ?<div?>
        ?<p?>Name: @Model.Name?</p?>
        ?<p?>Address 1: @Model.Address1?</p?>
        ?<p?>Address 2: @Model.Address2?</p?>
        @if (Model.Photo != null)
        {
            ?<div style="float:left;margin-right:20px"?>
               ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
            ?</div?>
        }
    ?</div?>
?</body?>
?</html?>
_

Selanjutnya, klik kanan pada folder Controller dan pilih Add diikuti oleh Controller dari popup. Beri nama Pengontrol baru Anda 'HomeController'

Cara menghubungkan database mysql di asp net mvc

Beginilah seharusnya tampilan 'HomeController'

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Razor.Controllers
{
    public class HomeController : Controller
    {

        cPerson myPerson = new cPerson(12);

        public ActionResult Index()
        {
            return View(myPerson);
        }

        public FileContentResult GetImage()
        {
            if (myPerson.Photo != null)
            {
                return File(myPerson.Photo, "jpg");
            }
            else
            {
                return null;
            }
        }
    }
}
_

Anda akan melihat beberapa redlining di bawah referensi kelas cPerson. Jadi kita perlu membuatnya dalam model - tetapi pertama-tama kita perlu menambahkan referensi ke MySQL. Data. Gunakan yang sama yang selalu Anda gunakan - bagi saya inilah adanya

Cara menghubungkan database mysql di asp net mvc

Sekarang, klik kanan Model dan tambahkan kelas, cPerson

Cara menghubungkan database mysql di asp net mvc

Seperti inilah tampilan cPerson seharusnya

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using MySql.Data.MySqlClient;
using System.Configuration;

namespace Razor.Models
{
    public class cPerson
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public string Address1 { get; set; }
        public string Address2 { get; set; }
        public byte[] Photo { get; set; }

        private bool connection_open;
        private MySqlConnection connection;

        public cPerson()
        {

        }

        public cPerson(int arg_id)
        {
            Get_Connection();
            PersonID = arg_id;
            //    m_Person = new CPersonMaster();
            //  List<CPersonMaster> PersonList = new List<CPersonMaster>();
            //PersonList = CComs_PM.Fetch_PersonMaster(connection, 4, arg_id);

            //if (PersonList.Count==0)
            //  return "";

            //m_Person = PersonList[0];

            //DB_Connect.CloseTheConnection(connection);
	try
	{
        

		MySqlCommand cmd = new MySqlCommand();
		cmd.Connection = connection;
		cmd.CommandText =
	string.Format("select concat (person_id, ') ', surname, ', ', forename) Person, Address1, Address2, photo, length(photo) from PersonMaster where Person_ID = '{0}'",
									  PersonID);

		MySqlDataReader reader = cmd.ExecuteReader();

		try
		{
			reader.Read();

			if (reader.IsDBNull(0) == false)
				Name = reader.GetString(0); 
			else
				Name = null;

            if (reader.IsDBNull(1) == false)
				Address1 = reader.GetString(1); 
			else
				Address1 = null;

            if (reader.IsDBNull(2) == false)
				Address2 = reader.GetString(2); 
			else
				Address2 = null;

			if (reader.IsDBNull(3) == false)
					{
						Photo = new byte[reader.GetInt32(4)];
                        reader.GetBytes(3, 0, Photo, 0, reader.GetInt32(4));
					}
					else
					{	
						Photo = null;
					}
            reader.Close();

		}
		catch (MySqlException e)
		{
			string  MessageString = "Read error occurred  / entry not found loading the Column details: "
				+ e.ErrorCode + " - " + e.Message + "; \n\nPlease Continue";
			//MessageBox.Show(MessageString, "SQL Read Error");
			reader.Close();
			Name= MessageString;
            Address1 = Address2 = null;
		}
	}
	catch (MySqlException e)
	{
			string  MessageString = "The following error occurred loading the Column details: "
				+ e.ErrorCode + " - " + e.Message;
			Name= MessageString;
            Address1 = Address2 = null;
		}
             
             
             
             
             connection.Close();


        }

        private void Get_Connection()
        {
            connection_open = false;

            connection = new MySqlConnection();
            //connection = DB_Connect.Make_Connnection(ConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString);
            connection.ConnectionString = ConfigurationManager.ConnectionStrings["MySQLConnection"].ConnectionString;

            //            if (db_manage_connnection.DB_Connect.OpenTheConnection(connection))
            if (Open_Local_Connection())
            {
                connection_open = true;
            }
            else
            {
                //					MessageBox::Show("No database connection connection made...\n Exiting now", "Database Connection Error");
                //					 Application::Exit();
            }

        }

        private bool Open_Local_Connection()
        {
            try
            {
                connection.Open();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }
    }
}

Jika semuanya terhubung dengan benar, saat Anda mengompilasi proyek dan meluncurkan situs, keluaran Anda akan seperti ini

Cara menghubungkan database mysql di asp net mvc

Bagaimana semuanya bekerja

Semua tindakan kunci terjadi dalam model, langkah kuncinya adalah

  • Sertakan pernyataan using untuk namespace MySql.Data.MySqlClient
  • Deklarasikan dan buat instance atribut bertipe MySqlConnection untuk menahan gagang koneksi
  • Baca string koneksi dari Web. Konfigurasikan ke dalam atribut ConnectionString dari gagang koneksi
  • Buka koneksi dengan menjalankan metode Open pada gagang koneksi
  • Deklarasikan dan instantiate atribut tipe
    @model Razor.Models.cPerson
    @{
        Layout = null;
    }
    ?<!DOCTYPE html?>
    ?<html?>
    ?<head?>
        ?<meta name="viewport" content="width=device-width" /?>
        ?<title?>Index?</title?>
    ?</head?>
    ?<body?>
        ?<div?>
            ?<p?>Name: @Model.Name?</p?>
            ?<p?>Address 1: @Model.Address1?</p?>
            ?<p?>Address 2: @Model.Address2?</p?>
            @if (Model.Photo != null)
            {
                ?<div style="float:left;margin-right:20px"?>
                   ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
                ?</div?>
            }
        ?</div?>
    ?</body?>
    ?</html?>
    0
  • Lewati gagang koneksi ke atribut koneksi dari atribut
    @model Razor.Models.cPerson
    @{
        Layout = null;
    }
    ?<!DOCTYPE html?>
    ?<html?>
    ?<head?>
        ?<meta name="viewport" content="width=device-width" /?>
        ?<title?>Index?</title?>
    ?</head?>
    ?<body?>
        ?<div?>
            ?<p?>Name: @Model.Name?</p?>
            ?<p?>Address 1: @Model.Address1?</p?>
            ?<p?>Address 2: @Model.Address2?</p?>
            @if (Model.Photo != null)
            {
                ?<div style="float:left;margin-right:20px"?>
                   ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
                ?</div?>
            }
        ?</div?>
    ?</body?>
    ?</html?>
    0 Anda
  • Masukkan pernyataan SQL Anda ke dalam atribut CommandText dari atribut
    @model Razor.Models.cPerson
    @{
        Layout = null;
    }
    ?<!DOCTYPE html?>
    ?<html?>
    ?<head?>
        ?<meta name="viewport" content="width=device-width" /?>
        ?<title?>Index?</title?>
    ?</head?>
    ?<body?>
        ?<div?>
            ?<p?>Name: @Model.Name?</p?>
            ?<p?>Address 1: @Model.Address1?</p?>
            ?<p?>Address 2: @Model.Address2?</p?>
            @if (Model.Photo != null)
            {
                ?<div style="float:left;margin-right:20px"?>
                   ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
                ?</div?>
            }
        ?</div?>
    ?</body?>
    ?</html?>
    0 Anda
  • Buat atribut
    @model Razor.Models.cPerson
    @{
        Layout = null;
    }
    ?<!DOCTYPE html?>
    ?<html?>
    ?<head?>
        ?<meta name="viewport" content="width=device-width" /?>
        ?<title?>Index?</title?>
    ?</head?>
    ?<body?>
        ?<div?>
            ?<p?>Name: @Model.Name?</p?>
            ?<p?>Address 1: @Model.Address1?</p?>
            ?<p?>Address 2: @Model.Address2?</p?>
            @if (Model.Photo != null)
            {
                ?<div style="float:left;margin-right:20px"?>
                   ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
                ?</div?>
            }
        ?</div?>
    ?</body?>
    ?</html?>
    _3 dan buat instance dengan menerapkan metode
    @model Razor.Models.cPerson
    @{
        Layout = null;
    }
    ?<!DOCTYPE html?>
    ?<html?>
    ?<head?>
        ?<meta name="viewport" content="width=device-width" /?>
        ?<title?>Index?</title?>
    ?</head?>
    ?<body?>
        ?<div?>
            ?<p?>Name: @Model.Name?</p?>
            ?<p?>Address 1: @Model.Address1?</p?>
            ?<p?>Address 2: @Model.Address2?</p?>
            @if (Model.Photo != null)
            {
                ?<div style="float:left;margin-right:20px"?>
                   ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
                ?</div?>
            }
        ?</div?>
    ?</body?>
    ?</html?>
    4 dari atribut
    @model Razor.Models.cPerson
    @{
        Layout = null;
    }
    ?<!DOCTYPE html?>
    ?<html?>
    ?<head?>
        ?<meta name="viewport" content="width=device-width" /?>
        ?<title?>Index?</title?>
    ?</head?>
    ?<body?>
        ?<div?>
            ?<p?>Name: @Model.Name?</p?>
            ?<p?>Address 1: @Model.Address1?</p?>
            ?<p?>Address 2: @Model.Address2?</p?>
            @if (Model.Photo != null)
            {
                ?<div style="float:left;margin-right:20px"?>
                   ?<img width="75" height="75" src="@Url.Action("GetImage", "Home")" /?>
                ?</div?>
            }
        ?</div?>
    ?</body?>
    ?</html?>
    0 Anda
  • Gunakan metode Baca atribut MySqlDataReader untuk memulihkan data Anda
  • Tutup koneksi menggunakan metode Tutup pada pegangan koneksi

Saya telah meninggalkan beberapa kode komentar di contoh terakhir. Ini adalah tempat saya berhasil membuat koneksi ke beberapa rakitan C++/CLI saya. Saya menyimpannya untuk tujuan referensi

Kesimpulan

Dalam menyusun artikel ini saya tetap dekat dengan topik daripada yang biasa saya lakukan. Satu-satunya 'ekstra' yang dapat ditemukan di sini adalah pengambilan data dari kolom gambar. Saya hanya akan merekomendasikan mengikuti contoh ini jika Anda memiliki persyaratan yang sangat spesifik yang tidak dapat dipenuhi oleh orang-orang seperti Nhibernate atau Entity Framework

 

Terakhir, selalu tutup koneksi Anda setelah setiap permintaan atau transaksi. Awalnya saya telah mencari cara untuk membuat koneksi di muka dan menyebarkan pegangan itu ke seluruh situs saya untuk menghilangkan overhead koneksi berulang. Meskipun mengurangi overhead koneksi mungkin merupakan praktik yang baik dalam aplikasi desktop, ini bukan ide yang baik untuk situs web. Ini karena membiarkan koneksi terbuka sampai akhir membuka jalan bagi serangan DOS atau denial of service melalui penggunaan semua koneksi database yang tersedia. Bahkan jika situs Anda tidak pernah diserang, terlalu banyak koneksi bersamaan akan menimbulkan masalah bagi pengguna sah Anda yang mengoperasikan situs di bawah parameter normal jika terlalu banyak dari mereka yang mengaksesnya sekaligus

Sejarah

22-09-2014 - V1. 0 - Pengajuan awal

Lisensi

Artikel ini, bersama dengan kode sumber dan file terkait, dilisensikan di bawah The Code Project Open License (CPOL)

Bagaimana cara terhubung ke database MySQL di ASP NET MVC?

Cara Menghubungkan ke MySQL dari. .
Instal MySqlConnector. Pertama, instal paket MySqlConnector NuGet. .
Tali Sambungan. String koneksi tipikal untuk MySQL adalah. Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE. .
Konfigurasi Layanan (ASP. inti bersih).
Buka dan Gunakan Koneksi

Bagaimana cara terhubung ke database MySQL di asp net?

Untuk Menghubungkan ke Database MySQL Menggunakan ASP. BERSIH .
Temukan string koneksi database Anda (Plesk). .
Menggunakan Microsoft Visual Studio. .
Tambahkan referensi ke MySql. .
Ganti nilai dalam kode berikut dengan your_ConnectionString dengan informasi basis data Anda

Bagaimana ASP NET MVC terhubung ke database SQL Server?

Untuk menambahkan Pengontrol database, ikuti langkah-langkah berikut, .
Klik kanan pada folder Pengontrol ASP. Proyek aplikasi web .NET MVC, klik Add lalu klik opsi Controller. .
Sekarang dari jendela Add Scaffold pilih MVC 5 Controller with views, using Entity Framework dan tekan tombol Add

Bagaimana menghubungkan ke database di. .NET Core MVC?

Prasyarat. SEBUAH. .
Buat basis data. Mari buat database di SQL Server lokal Anda. .
Buat ASP. Aplikasi .NET Core. Ikuti langkah-langkah ini untuk membuat ASP. Aplikasi .NET Core. .
Instal paket NuGet. .
Perancah. .
Hubungkan aplikasi dengan database. .
Jalankan aplikasi. .
Kesimpulan