数据库连接
从工具箱中把SqlDataSource控件拖放到页面aspx中。
点击配置数据源可以选择连接目标。默认是没有选项的,我们点击新建连接,然后从身份验证中选择想连接的服务器是默认的windows身份验证还是sql server验证,我这里是windows身份验证,它的服务器名是一个点(.)然后选择数据库,最后测试下连接即可确定。
随即我们会发现从web.config文件中看到多了些代码:
<connectionStrings>
<add name="studentsConnectionString" connectionString="Data Source=.;Initial Catalog=students;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
这些就是公共的数据库连接配置。
connectionStrings节点两种方式:
<connectionStrings>
第一种:
<add name="名称" connectionString="Data Source=服务器名;Initial Catalog=数据库名;User ID=用户;Password=密码" providerName="System.Data.SqlClient" />
第二种:
<add name="名称" connectionString="server=服务器名;database=数据库名; Ueer ID=用户;Password=密码" providerName="System.Data.SqlClient" />
</connectionStrings>
在页面还可以这样引用<%$ ConnectionString:Name%>.
接下来看回aspx文件:
<%--数据库配置--%>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:studentsConnectionString %>" >
</asp:SqlDataSource>
很明显它帮我们引入了web.config文件中的ConnectionString配置对象。
至此,数据库连接操作完成。
查询
查询之前,我们需要把查询的命令给它加上去。所以,我们可以在SqlDataSource控件中绑定查询命令SelectCommand属性。
<%--数据库配置--%>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:studentsConnectionString %>"
SelectCommand="SELECT * FROM [Table1]">
</asp:SqlDataSource>
然后我们从工具箱中拖动一个GridView控件进行查看数据库表,GridView可以绑定SqlDataSource控件得到查询信息。
<%--查询--%>
<h1>查询数据</h1>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
</Columns>
</asp:GridView>
从上方能看到,DataSourceID属性能够绑定SqlDataSource控件的ID(SqlDataSource1),然后在控件中手写入Columns控件,可以装载其他控件,我们再拖入BoundField控件,让其绑定id,name进行渲染操作,这里就相当于一个for循环操作了,注意:绑定的id,name属性都是表字段名称。
再运行程序打开浏览器就看到查询数据了。
插入
插入之前,我们给SqlDataSource控件写上插入命令,values值我们可以绑定成传入的形参形式表示(@id,@name)。
<%--数据库配置--%>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:studentsConnectionString %>"
SelectCommand="SELECT * FROM [Table1]"
InsertCommand="insert into [Table1] values(@id,@name);">
</asp:SqlDataSource>
我们拖动一些新的表单进行插入操作。
<%--插入--%>
<h1>插入数据</h1>
<asp:Label ID="Label2" runat="server" Text="学号:"></asp:Label>
<asp:TextBox ID="StuId" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="姓名:"></asp:Label>
<asp:TextBox ID="StuName" runat="server"></asp:TextBox>
<br />
<asp:Button ID="AddButton" runat="server" Text="添加" OnClick="AddButton_Click1"/><br />
<asp:Label ID="AddMsg" runat="server" Text=""></asp:Label>
新数据输入完毕之后点击按钮执行AddButton_Click1插入事件。于是我们开始从CS文件中写逻辑了。
protected void AddButton_Click1(object sender, EventArgs e)
{
//获取表单数据
string id = StuId.Text;
string name = StuName.Text;
//执行插入
SqlDataSource1.InsertParameters.Add("id", id);
SqlDataSource1.InsertParameters.Add("name", name);
//SqlDataSource1.Insert() 返回影响行数大于0则
if (SqlDataSource1.Insert() > 0)
{
AddMsg.Text = "数据添加成功";
//刷新页面(重定向)
Response.Redirect("/WebForm1.aspx");
return;
}
AddMsg.Text = "数据添加失败";
}
修改
修改之前,我们给SqlDataSource控件写上修改命令,values值我们可以绑定成传入的形参形式表示。
<%--数据库配置--%>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:studentsConnectionString %>"
SelectCommand="SELECT * FROM [Table1]"
InsertCommand="insert into [Table1] values(@id,@name);"
UpdateCommand="update [Table1] set name=@name where id=@id;">
</asp:SqlDataSource>
同理,添加表单做修改操作。
<%--修改--%>
<h1>修改数据</h1>
<br />
<asp:Label ID="Label6" runat="server" Text="学号:"></asp:Label>
<asp:TextBox ID="StuId2" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label7" runat="server" Text="姓名:"></asp:Label>
<asp:TextBox ID="StuName2" runat="server"></asp:TextBox>
<br />
<asp:Button ID="UpdateButton" runat="server" Text="更新" OnClick="UpdateButton_Click"/>
<asp:Label ID="UpdateMsg" runat="server"></asp:Label>
CS文件中写UpdateButton_Click修改事件。
protected void UpdateButton_Click(object sender, EventArgs e)
{
string id = StuId2.Text;
string name = StuName2.Text;
if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name) )
{
UpdateMsg.Text = "数据项不能为空";
return;
}
SqlDataSource1.UpdateParameters.Add("id", id);
SqlDataSource1.UpdateParameters.Add("name", name);
if (SqlDataSource1.Update() > 0)
{
UpdateMsg.Text = "数据更新成功";
Response.Redirect("/WebForm1.aspx");
return;
}
UpdateMsg.Text = "数据更新失败";
}
删除
删除之前,我们给SqlDataSource控件写上删除命令,values值我们可以绑定成传入的形参形式表示。
<%--数据库配置--%>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:studentsConnectionString %>"
SelectCommand="SELECT * FROM [Table1]"
InsertCommand="insert into [Table1] values(@id,@name);"
UpdateCommand="update [Table1] set name=@name where id=@id;"
DeleteCommand="delete from [Table1] where id=@id;">
</asp:SqlDataSource>
我们增加一个表单来获取用户即将要删除的ID号。
<%--删除--%>
<h1>删除数据</h1>
<br />
<asp:Label ID="Label10" runat="server" Text="学号:"></asp:Label>
<asp:TextBox ID="StuId3" runat="server"></asp:TextBox>
<br />
<asp:Button ID="DeleteButton" runat="server" Text="删除" style="width: 40px" OnClick="DeleteButton_Click" />
<asp:Label ID="DeleteMsg" runat="server"></asp:Label>
CS文件中写DeleteButton_Click删除事件。
protected void DeleteButton_Click(object sender, EventArgs e)
{
string id = StuId3.Text;
if (String.IsNullOrEmpty(id))
{
DeleteMsg.Text = "数据项不能为空";
return;
}
SqlDataSource1.DeleteParameters.Add("id", id);
if (SqlDataSource1.Delete() > 0)
{
DeleteMsg.Text = "数据删除成功";
Response.Redirect("/WebForm1.aspx");
return;
}
DeleteMsg.Text = "数据删除失败";
}
全部代码
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="dataDemo.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<%--数据库配置--%>
<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:studentsConnectionString %>"
SelectCommand="SELECT * FROM [Table1]"
InsertCommand="insert into [Table1] values(@id,@name);"
DeleteCommand="delete from [Table1] where id=@id;"
UpdateCommand="update [Table1] set name=@name where id=@id;">
</asp:SqlDataSource>
<%--查询--%>
<h1>查询数据</h1>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
</Columns>
</asp:GridView>
<br />
<br />
<%--插入--%>
<h1>插入数据</h1>
<asp:Label ID="Label2" runat="server" Text="学号:"></asp:Label>
<asp:TextBox ID="StuId" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="姓名:"></asp:Label>
<asp:TextBox ID="StuName" runat="server"></asp:TextBox>
<br />
<asp:Button ID="AddButton" runat="server" Text="添加" OnClick="AddButton_Click1"/><br />
<asp:Label ID="AddMsg" runat="server" Text=""></asp:Label>
<br />
<br />
<%--修改--%>
<h1>修改数据</h1>
<br />
<asp:Label ID="Label6" runat="server" Text="学号:"></asp:Label>
<asp:TextBox ID="StuId2" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label7" runat="server" Text="姓名:"></asp:Label>
<asp:TextBox ID="StuName2" runat="server"></asp:TextBox>
<br />
<asp:Button ID="UpdateButton" runat="server" Text="更新"
OnClick="UpdateButton_Click"/>
<asp:Label ID="UpdateMsg" runat="server"></asp:Label>
<br />
<br />
<%--删除--%>
<h1>删除数据</h1>
<br />
<asp:Label ID="Label10" runat="server" Text="学号:"></asp:Label>
<asp:TextBox ID="StuId3" runat="server"></asp:TextBox>
<br />
<asp:Button ID="DeleteButton" runat="server" Text="删除"
style="width: 40px" OnClick="DeleteButton_Click"
/>
<asp:Label ID="DeleteMsg" runat="server"></asp:Label>
<br />
<br />
</form>
</body>
</html>
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace dataDemo
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void AddButton_Click1(object sender, EventArgs e)
{
string id = StuId.Text;
string name = StuName.Text;
SqlDataSource1.InsertParameters.Add("id", id);
SqlDataSource1.InsertParameters.Add("name", name);
if (SqlDataSource1.Insert() > 0)
{
AddMsg.Text = "数据添加成功";
Response.Redirect("/WebForm1.aspx");
return;
}
AddMsg.Text = "数据添加失败";
}
protected void UpdateButton_Click(object sender, EventArgs e)
{
string id = StuId2.Text;
string name = StuName2.Text;
if (String.IsNullOrEmpty(id) || String.IsNullOrEmpty(name) )
{
UpdateMsg.Text = "数据项不能为空";
return;
}
SqlDataSource1.UpdateParameters.Add("id", id);
SqlDataSource1.UpdateParameters.Add("name", name);
if (SqlDataSource1.Update() > 0)
{
UpdateMsg.Text = "数据更新成功";
Response.Redirect("/WebForm1.aspx");
return;
}
UpdateMsg.Text = "数据更新失败";
}
protected void DeleteButton_Click(object sender, EventArgs e)
{
string id = StuId3.Text;
if (String.IsNullOrEmpty(id))
{
DeleteMsg.Text = "数据项不能为空";
return;
}
SqlDataSource1.DeleteParameters.Add("id", id);
if (SqlDataSource1.Delete() > 0)
{
DeleteMsg.Text = "数据删除成功";
Response.Redirect("/WebForm1.aspx");
return;
}
DeleteMsg.Text = "数据删除失败";
}
}
}