1 月 31

    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; }

        [FileExtensions(ErrorMessage = "所上傳的檔案不是圖片")]
        public string File { get; set; }

        [CreditCard(ErrorMessage = "這不是信用卡格式")]
        public string CreditCard { get; set; }

        [DataType(DataType.Date)]
        public string Date { get; set; }

        [Remote("RemoteTest", "Home", ErrorMessage = "Remote屬性測試")]
        public string For_Remote { get; set; }

        [MetadataType(typeof(ContentMetaData))]
        public partial class Content
        {
            private class ContentMetaData
            {
                [DisplayName("編號")]
                public int Id { get; set; }

                [DisplayName("姓名")]
                [Required(ErrorMessage = "請輸入性名")]
                [StringLength(10, ErrorMessage = "姓名不得超過10字元")]
                public string Name { get; set; }

                [DisplayName("內容")]
                [Required(ErrorMessage = "請輸入內容")]
                public string Content { get; set; }
            }
        }
    }
1 月 31

  早上遇到一個問題,前晚在設定完Synology NAS的權限後,今天遇到有人反應開啟NAS上的檔案時,出現”目錄名稱無效”的錯誤,確認NAS權限沒問題後,就上網找資訊,有找到一位網友遇到同樣的情形,且看起來是Windows 10更新到1709後才發生,查看手邊的電腦,確實也是1709。

繼續瀏覽 »

1 月 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; }
    }
1 月 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;
        }
    }
1 月 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();
        }
    }
}
1 月 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
1 月 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
1 月 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
1 月 13

1 月 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
        }
    }
}