Jan 30
public class Index
{
    [DisplayName("必選修")]
 
    public string required { get; set; }
 
    /*name只能有一個,所以這兩段先註解掉
    [Required(ErrorMessage = "學生姓名不得為空白")]
    public string name { get; set; }
 
    [StringLength(10, ErrorMessage = "學生姓名不得超過10字元")]
    public string name { get; set; }
    */
 
    [StringLength(10, ErrorMessage = "學生姓名必須介於2-10字元", MinimumLength = 2)]
    public string name { get; set; }
 
    [Range(0, 100, ErrorMessage = "得分必須介於0~100之間")]
    public int point { get; set; }
 
    [System.Web.Mvc.Compare("re_password", ErrorMessage = "兩次密碼輸入不一致")]
    //上面沒有using System.Web.Mvc,所以這邊就要打完整的命名空間
    public string password { get; set; }
    public string re_password { get; set; }
 
    [RegularExpression( @"^[0-9]{2,4}-?[0-9]{3,4}-?[0-9]{-4}$", ErrorMessage = "請輸入正確的電話號碼")]
    public string phone { get; set; }
 
    [EmailAddress(ErrorMessage = "這不是E-mail格式")]
    public string studentmail { get; set; }
 
    [Url(ErrorMessage = "這不是網址標準格式")]
    public string url { get; set; }
}
Jan 29
public class GuestbookDB
{
    GuestbookEntities1 db = new GuestbookEntities1();
    //GuestbookEntities1: 資料庫,如一個公司別的資料庫
 
    //新增一筆資料
    public void Create(string name, string content)
    {
        Contents NewData = new Contents();
        //Contents: 資料庫底下的一個Table
        //因db.Table.Add需要寫入完整的table,所以要先產生一個Content的物件,接收各欄位的值後,再回寫至DB
        //如果接收到是完整的table,就用下一個方法,直接add到DB即可
 
        NewData.name = name;
        NewData.content = content;
 
        db.Contents.Add(NewData);
        db.SaveChanges();
    }
    public void Create(Contents NewData)
    {
        db.Contents.Add(NewData);
        //Add語法似乎是資料庫(db)專用語法,所以不可以省略db,而直接用Table的Contenes.Add
        db.SaveChanges();
    }
 
    //修改資料
    public bool Update(int id, string name, string content)
    {
        //撈資料
        Contents Data = db.Contents.Find(id);
        //不同於Create有在記憶體先產生一個物件,這邊可以直接把Data指到資料庫的位置去做修改
 
        //判斷是否有資料
        if (Data != null)
        {
            //修改資料的值
            Data.name = name;
            Data.content = content;
 
            //儲存資料變更
            db.SaveChanges();
 
            return true;
            //對應到method宣告的會回傳bool值
        }
        else
        {
            return false;
        }
    }
 
    public bool Update(Contents UpdateData)
    {
        Contents Data = db.Contents.Find(UpdateData.Id);
 
        if (Data != null)
        {
            Data.name = UpdateData.name;
            Data.content = UpdateData.content;
            //之後可以試試直接Data=UpdateData看看
 
            db.SaveChanges();
            return true;
        }
        else
        {
            return false;
        }
 
    }
 
    public bool Delete(int id)
    {
        Contents DeleteData = db.Contents.Find(id);
 
        if (DeleteData != null)
        {
            db.Contents.Remove(DeleteData);
 
            db.SaveChanges();
            return true;
        }
        else
        {
            return false;
        }
    }
 
    //取得所有資料
    public List<Contents> GetList()
    {
        //取得Contents的資料,並轉成List
        List<Contents> ContentList = db.Contents.ToList();
 
        return ContentList;
    }
 
    //取得單一筆資料
    public Contents GetContents(int id)
    {
        Contents Data = db.Contents.Find(id);
 
        return Data;
    }
}
Jan 24
namespace WebApplication1.Models
{
    public class GuestbookDB
    {
        GuestbookEntities1 db = new GuestbookEntities1();
        //GuestbookEntities1: 資料庫,如一個公司別的資料庫
 
        public void Create(string name, string content)
        {
            Contents NewData = new Contents();
            //Contents: 資料庫底下的一個Table
 
            NewData.name = name;
            NewData.content = content;
 
            db.Contents.Add(NewData);
            db.SaveChanges();
        }
        public void Create(Contents NewData)
        {
            db.Contents.Add(NewData);
            db.SaveChanges();
        }
    }
}
Jan 21
--新增含有三個欄位的TABLE
CREATE TABLE COURSE(
CNAME NVARCHAR(128) PRIMARY KEY,
CREDIT INT,
TEACHER NVARCHAR(30)
)
 
=========================
 
--在既有TABLE新增一個欄位
ALTER TABLE SCORE
ADD NEWFILED VARCHAR(10)
 
--修改欄位形態
ALTER TABLE SCORE ALTER COLUMN NEWFILED INT
 
--刪除欄位
ALTER TABLE SCORE DROP COLUNN NEWFILD
 
=========================
 
--刪除TABLE
DROP TABLE dbo.AVERAGE
Jan 21
SELECT * FROM SCORE
  WHERE COURSE = '物件導向程式設計'
   
SELECT * FROM SCORE
  WHERE COURSE LIKE '%程式設計%'
   
SELECT * FROM SCORE
  ORDER BY SCORE DESC
   
================================
 
--SQL註解1
/*SQL註解2*/
 
================================
 
--別名
SELECT S.COURSE FORM SCORE S
 
===============================
 
--合併表格 INNER JOIN
SELECT P.NAME, S.SID, S.SCORE, S.COURSE
  FROM SCORE S
  INNER JOIN STUDENT P ON S.SID = P.SID
   
--簡化寫法
SELECT P.NAME, S.SID, S.SCORE, S.COURSE
  FROM SCORE S, STUDENT P
  WHERE S.SID = P.SID
   
==================================
 
--LEFT OUTTER JOIN
SELECT P.NAME, S.SID, S.COURSE, S.SCORE
  FROM SCORE S,
  LEFT OUTTER JOIN STUDENT P ON S.SID = P.PID
 
--RIGHT OUTTER JOIN
SELECT P.NAME, S.SID, S.COURSE, S.SCORE
  FROM SCORE S,
  RIGHT OUTTER JOIN STUDENT P ON S.SID = P.PID
   
--FULL OUTTER JOIN
SELECT P.NAME, S.SID, S.COURSE, S.SCORE
  FROM SCORE S,
  FULL OUTTER JOIN STUDENT P ON S.SID = P.PID
Jan 18
INSERT..()
  VALUE..()
 
INSERT SCORE (SID, COURSE, SCORE)
  VALUES ('S001', '程式設計', 86)
 
INSERT SCORE (SID, COURSE, SCORE)
  VALUES ('A003', '程式設計', 74)
 
由於各欄位不可為NULL,故語法可以省略為下:
 
INSERT SCORE
  VALUE ('S002', '演算法', 77)
 
INSERT SCORE
  VALUE ('S003', '演算法', 57)
 
===============
 
UPDATE..
  SET..=
  WHERE..=
 
UPDATE SCORE
  SET COURSE = '物件導向程式設計',
      SCORE = 95
  WHERE SID = 'S001'
 
=================
 
DELETE FROM..
  WHERE..=
 
DELETE FROM SCORE
  WHERE SID = 'S003'
 
=================
 
SELECT * FROM SCORE
 
SELECT SID AS '學號', COURSE AS '科目名稱', SCORE AS '分數" FROM SCORE
Jan 13

Jan 9
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;
using WebApplication1.Services;
 
namespace WebApplication1.Controllers
{
    public class MessageController : Controller
    {
        messageDBService data = new messageDBService(); //實作Services的物件 (其含有兩個方法:1.取得資料庫資料並回傳 2.接收資料並寫進資料庫)
        // GET: Message
        public ActionResult Index()             //執行Index檢視頁面 (首頁或索引頁面)
        {
            return View(data.GetData());        //將資料傳回View (使用方法1.)
        }
 
        public ActionResult Create()            //執行Create檢視頁面 (新增資料的頁面)
        {
            return View();
        }
 
        [HttpPost]                              //當瀏覽器發送HTTP POST請求才會執行
        public ActionResult Create(string Article_title, string Content)        //當使用Create這個Action且有帶參數時
        {
            data.DBCreate(Article_title, Content);      //把資料寫進資料庫 (使用方法2.)
 
            return RedirectToAction("Index");           //回到Index這個Action
        }
    }
}
Jan 7
Interface: 定義為抽象的概念,與Class差別為,界面雖然有包含屬性與方法,但只宣告而不包含實作內容。
--類別只能"繼承"一個父類別,但能"實作"(語法跟繼承很像)多個介面。(老爸只能有一個,乾爹可以認很多個的概念)
--類別實作介面時,只會得到方法的名稱,不會包含任何實作內容。
Jan 4
class Aaa{}             //class類別
  decimal Bbb(){}       //method方法
    int Ccc{get; set;}  //property屬性
 
。不含set的屬性被視為唯讀
。不含get的屬性被視為唯寫
。同時具有這兩種存取子的屬性則為可讀寫