一、搭建三层架构
1.创建视图层项目
创建一个空白的ASP.NET web(.NET framework)项目
2.创建业务层项目
鼠标右键点击解决方案添加新建项目
添加类库(.NET framework)项目,项目命名为BLL
3.创建数据访问层
鼠标右键点击解决方案添加新建项目
添加类库(.NET framework)项目,项目命名为DAL
4.创建模型层项目
鼠标右键点击解决方案添加新建项目
添加类库(.NET framework)项目,项目命名为DataLinq
二、添加引用
1.鼠标右键点击模型层项目,添加引用程序集
搜索Linq引用System.Data.Linq
2.在数据访问层和业务逻辑层中重复以上操作
3.鼠标右键点击数据访问层项目,添加引用
引用项目DataLinq(模型层项目)
4.按照以上方法进行引用
在视图层引用业务层、模型层
在业务层引用数据访问层、模型层
在数据访问层引用模型层
三、模型层编码
1.模型层
编写Student类
private int id;
private string name;
private int age;
private string address;
private DateTime studydate;
封装字段
[Column(Name = "Id", IsPrimaryKey = true, IsDbGenerated = true)]
public int Id { get => id; set => id = value; }
[Column(Name = "Name")]
public string Name { get => name; set => name = value; }
[Column(Name = "Age")]
public int Age { get => age; set => age = value; }
[Column(Name = "Address")]
public string Address { get => address; set => address = value; }
[Column(Name = "StudyDate")]
public DateTime StudyDate { get => studydate; set => studydate = value; }
添加构造函数
public Student()
{
}
public Student(string name, int age, string address, DateTime studydate)
{
Name = name;
Age = age;
Address = address;
StudyDate = studydate;
}
public Student(string name, int age, string address)
{
Name = name;
Age = age;
Address = address;
}
在DataLinq中添加类MyDataContext
使用Linq语句链接数据库
[Database(Name = "Da_sanFE_LX")]
public class MyDataContext : DataContext
{
public MyDataContext() : base
("Server=.;database=Da_sanFE_LX;uid=sa;pwd=208827563")
{
}
public Table<Student> Student;
}
四、数据查询
在DAL中创建Stu_DAO类,在BLL中创建Stu_Service类
然后在Stu_DAO中输入
public MyDataContext context = new MyDataContext();
public List<Student> SelectStudents()
{
List<Student> stus = new List<Student>();
var result = (from stu in context.Student
select stu).ToList();
stus = result;
return stus;
}
在Stu_Service中输入
Stu_DAO stu_dao = new Stu_DAO();
public List<Student> SelectStudents()
{
return stu_dao.SelectStudents();
}
然后在web项目中新建web窗体
在窗体中输入基本外观和表中元素
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>入学日期</th>
<th>操作</th>
</tr>
</table>
在tr标签后插入Repeater插件并输入查询数据代码
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>入学日期</th>
<th>操作</th>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<tr>
<td><%#Eval("id") %></td>
<td><%#Eval("name") %></td>
<td><%#Eval("age") %></td>
<td><%#Eval("address") %></td>
<td><%#Eval("studydate") %></td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" CommandArgument='<%#Eval("id") %>'>删除</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="edit" CommandArgument='<%#Eval("id") %>'>修改</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
最后后去aspx.cs中调用查询方法
//调用service
Stu_Service service = new Stu_Service();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.Repeater1.DataSource = service.SelectStudents();
this.Repeater1.DataBind();
}
}
五、增删改
在Stu_DAO和Stu_Service中输入增删改的方法
Stu_DAO代码
public List<Student> SelectStudentsByName(string name)
{
List<Student> stus = new List<Student>();
var result = from stu in context.Student
where (stu.Name.IndexOf(name)!=-1?true:false)
select stu;
foreach (Student item in result)
{
stus.Add(item);
}
return stus;
}
public bool DeleteById(int id)
{
try
{
var result = (from stu in context.Student
where stu.Id == id
select stu).Single();
context.Student.DeleteOnSubmit(result);
context.SubmitChanges();
return true;
}
catch
{
return false;
}
}
public int Insert(Student stu)
{
try
{
context.Student.InsertOnSubmit(stu);
context.SubmitChanges();
return stu.Id;
}
catch
{
return 0;
}
}
public bool Eidt(int id,Student stu)
{
try
{
var result = from stuNew in context.Student
where stuNew.Id == id
select stuNew;
foreach (Student item in result)
{
item.Name = stu.Name;
item.Age = stu.Age;
item.Address = stu.Address;
item.StudyDate = stu.StudyDate;
}
context.SubmitChanges();
return true;
}
catch
{
return false;
}
}
Stu_Service代码
public List<Student> SelectStudentsByID(string name)
{
return stu_dao.SelectStudentsByName(name);
}
public bool DeleteById(int id)
{
return stu_dao.DeleteById(id);
}
public int Insert(Student stu)
{
return stu_dao.Insert(stu);
}
public bool Eidt(int id, Student stu)
{
return stu_dao.Eidt(id,stu);
}
1.增
新建一个Web窗体用作添加页面
输入你所需要增加的数据类型,以及页面格式
<form id="form1" runat="server">
<h5>添加</h5>
<div>
<label>姓名</label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<label>年龄</label><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<label>地址</label><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<label>日期</label><asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click" />
</div>
</form>
页面创建完成后,给button键添加功能。跳转到add页面的aspx.cs页面,给button调用在service中的添加方法以及跳转回主页面功能
DateTime datetiem;
try
{
datetiem = Convert.ToDateTime(this.TextBox4.Text);
}
catch
{
datetiem = DateTime.Now;
}
Student stu = new Student()
{
Name = this.TextBox1.Text,
Age = Convert.ToInt32(this.TextBox2.Text),
Address = this.TextBox3.Text,
StudyDate = datetiem
};
int result = service.Insert(stu);
Response.Redirect("Firstweb.aspx?msgI=" + result);
转回主页面,设置添加键,使添加键可以跳转到添加页面
<asp:Button ID="Button1" runat="server" OnClick="Insert" Text="添加" />
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>入学日期</th>
<th>操作</th>
</tr>
<table>
添加事件代码
protected void Insert(object sender, EventArgs e)
{
Response.Redirect("Addweb.aspx");
}
2.删
在首页中加入LinkButton控件,text为删除
<asp:Button ID="Button1" runat="server" OnClick="Insert" Text="添加" />
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>入学日期</th>
<th>操作</th>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<tr>
<td><%#Eval("id") %></td>
<td><%#Eval("name") %></td>
<td><%#Eval("age") %></td>
<td><%#Eval("address") %></td>
<td><%#Eval("studydate") %></td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" CommandArgument='<%#Eval("id") %>'>删除</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
然后去apex.cs页面调用删除方法
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string argName = e.CommandName;
int argId = Convert.ToInt32(e.CommandArgument);
if (argName=="delete")
{
bool result = service.DeleteById(argId);
if (result)
Response.Redirect("Firstweb.aspx?msgD=" + "删除成功");
else
Response.Redirect("Firstweb.aspx?msgD=" + "删除失败");
}
else
{
Response.Redirect("Eidtweb.aspx?msgID="+argId);
}
}
3.改
新增一个窗体作为修改界面
输入你所需要修改的数据类型,以及页面格式
<form id="form1" runat="server">
<h5>修改</h5>
<div>
<label>ID</label><asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<br />
<label>姓名</label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<label>年龄</label><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<label>地址</label><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<label>日期</label><asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click" />
</div>
</form>
页面创建完成后,给button键添加功能。跳转到edit页面的aspx.cs页面,给button调用在service中的修改方法以及跳转回主页面功能
protected void Button1_Click(object sender, EventArgs e)
{
DateTime datetiem;
try
{
datetiem = Convert.ToDateTime(this.TextBox4.Text);
}
catch
{
datetiem = DateTime.Now;
}
Student stu = new Student()
{
Name = this.TextBox1.Text,
Age = Convert.ToInt32(this.TextBox2.Text),
Address = this.TextBox3.Text,
StudyDate = datetiem
};
if (service.Eidt(msgID,stu))
Response.Redirect("Firstweb.aspx?msgE=" + "修改成功");
else
Response.Redirect("Firstweb.aspx?msgE=" + "修改失败");
}
在首页中加入LinkButton控件,text为修改
<asp:Button ID="Button1" runat="server" OnClick="Insert" Text="添加" />
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>入学日期</th>
<th>操作</th>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<tr>
<td><%#Eval("id") %></td>
<td><%#Eval("name") %></td>
<td><%#Eval("age") %></td>
<td><%#Eval("address") %></td>
<td><%#Eval("studydate") %></td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" CommandArgument='<%#Eval("id") %>'>删除</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="edit" CommandArgument='<%#Eval("id") %>'>修改</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
修改事件代码
Stu_Service service = new Stu_Service();
int msgID;
protected void Page_Load(object sender, EventArgs e)
{
msgID = Convert.ToInt32(Request.QueryString["msgID"]);
this.TextBox5.Text = msgID.ToString();
}