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

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