後端Controller
using MVCTest.Models;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVCTest.Controllers
{
public class HomeController : Controller
{
string connString = "server=127.0.0.1;port=3306;user id=root;password=Admini1!;database=mvctest;charset=utf8;";
MySqlConnection conn = new MySqlConnection();
public ActionResult Index()
{
conn.ConnectionString = connString;
string sql = @"SELECT `id`,`city` FROM `city`";
DataTable dt = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter(sql,conn);
adapter.Fill(dt);
ViewBag.DT = dt;
return View();
}
}
}
=======================
MySqlDataAdapter
會自動處理連線跟斷線
原作者提醒
如果MySqlDataAdapter後面還要接MySqlCommand的話,
記得要在Command前面加上連線,
因為MySqlDataAdapter會把資料庫連線關掉,
然後Command就抓不到資料,
就會回傳錯誤了。
adapter.Fill(dt);
DataTable中,這裡注意一下如果會用迴圈跑Fill
它會一直加在DataTable的尾端
甚至不同資料表也可以做得到
但就會產生某些欄位變成Null
所以如果設計上是要刪除舊的資料的話
DataTable記得要先Clear或new一個新的出來。
========================
前端Cshtml
@{
ViewBag.Title = "Home Page";
Layout = null;
var dt = ViewBag.DT;
}
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
<div>
@for(int i=0;i<dt.Rows.Count;i++)
{
@Html.Raw($"代號: {dt.Rows[i]["id"]}, 名稱: {dt.Rows[i]["city"]}")
<br />
}
</div>
=====================
