ASP.NET---操作数据库增删改查

关于如何连接数据库 上一篇博客有讲点击跳转

在说增删改查之前,我们先了解下他们的区别

  1. 从原理操作上来讲,select操作需要回传查询到的数据,而另外三个操作只需要回传是否成功就行了
  2. 但是从实际业务逻辑来讲,我们insert插入数据时,很多时候为了保证关键数据的唯一性,我们需要借助select先查询,再插入。而update delete一般用来管理数据,而很多时候需要先将数据查出来显示给用户,然后才执行管理操作,所以也需要select配合。
  3. 所以,select操作是使用相对较频繁的操作。而不同场景下,也有不同的用法,如登陆是,我们只需要在后台查询匹配成功即可,但是若教学管理系统查询成绩的时候,我们则需要把查询的数据显示出来,所以,如何显示数据也是的重要部分

查 select (登陆&查询新闻)

登陆的业务逻辑: 将输入的登陆信息与数据库信息查找匹配,返回结果,成功则跳转登陆,否则弹窗报错。

    protected void Button1_Click(object sender, EventArgs e)
    {
        string username=   ;//赋值为前端输入的用户名
        string password=   ;//赋值为前端输入的密码
        //存下sql语句
        string sql="select *from tbuser where username='"+username+"' and password='"+password+"'";
        //打开并连接数据库
        SqlCommand cmd=new SqlCommand();
        //传入sql语句   这个DB是刚才创建的连接数据库的类名  comd是他里面的准备执行的方法名
        cmd=DB.comd(sql);
        //从数据库中读取数据
        SqlDataReader sdr=cmd.ExecuteReader();
        //判断是否读到数据
        if(sdr.Read())
        {
            //输出查询到的数据  sdr[""]里面写的是数据库中表里的字段名称
            Response.Write(sdr["username"].ToString());
            //Response.Redirect("index.aspx");//页面重定向 (跳转页面)
        }
        else
        {
            Response.Write("<script>alert('用户名或密码错误')</script>");
        }
    }

查询数据业务逻辑 :我们在页面上做一个入口(按钮或者超连接),当用户点击后,我们后台执行查询,并将查询到的结果在此页面(或跳转页面)展示给用户
例如:查询新闻我们做一个main页面,此页面会给用户显示tbnews表中的数据

protected void Page_Load(object sender, EventArgs e)
    {
        string sql="select *from tbnews";
        SqlCommand cmd=new SqlCommand();
        cmd=DB.comd(sql);
        SqlDataReader sdr=cmd.ExecuteReader();
        Response.Write("<table>");
        //读取数据 直到结束  以表格形式输出
        while(sdr.Read())
        {
            Response.Write("<tr><td>");
            Response.Write(sdr["title"]);//[]内为数据库字段名称
            Response.Write("</td><td>");
            Response.Write(sdr["content"]);//[]内为数据库字段名称
            Response.Write("</td></tr>");
        }
        Response.Write("</table>");
    }

增 insert (注册)

注册业务逻辑填写注册信息,验证信息合法(前端验证),用户名唯一(后端验证),将信息插入数据库

protected void Button1_Click(object sender, EventArgs e)
    {
        string username= usernameTextBox.Text ;
        string password= passwordTextBox.Text ;
        string tel = telTextBox.Text;

        SqlCommand cmd = new SqlCommand();//打开数据库

        if (check(username, cmd))
        {
            string sql = "insert into tbuser(username,password,phone) values('" + username + "','" + password + "','" + tel + "')";
            cmd = DB.comd(sql);
            int i=cmd.ExecuteNonQuery();//读取数据库受影响行数
            if(i>0)  Response.Write("<script>alert('注册成功')</script>");
            else     Response.Write("<script>alert('注册失败')</script>");

        }
        else
        {
            Response.Write("<script>alert('用户名已存在')</script>");
        }
    }
    //查询用户名是否已经存在
    protected bool check(string u,SqlCommand cmd) 
    {
        string sql="select *from tbuser where username='"+u+"'";
        cmd = DB.comd(sql);
        SqlDataReader sdr = cmd.ExecuteReader();
        if (sdr.Read())
        {
            return false;
        }
        else 
        {
            return true;
        }
    }

删除和更新

删除和更新之前我们都需要先将数据展示给用户,并且给用户提供操作按钮(或超链接)
main页面

protected void Page_Load(object sender, EventArgs e)
    {
        string sql="select *from tbnews";
        SqlCommand cmd=new SqlCommand();
        cmd=DB.comd(sql);
        SqlDataReader sdr=cmd.ExecuteReader();
        Response.Write("<table>");
        Response.Write("<th>标题</th><th>内容</th><th>操作</th>");
        while(sdr.Read())
        {
            Response.Write("<tr><td>");
            Response.Write(sdr["title"]);
            Response.Write("</td><td>");
            Response.Write(sdr["content"]);
            Response.Write("</td><td>");
            Response.Write("<a href='delete.aspx?id="+sdr["id"]+"'>删除</a>");//数据库中id字段是int型 故不需要加单引号
            Response.Write("</td><td>");
            Response.Write("<a href='update.aspx?id="+sdr["id"]+"'>更新</a>");//数据库中id字段是int型 故不需要加单引号
            Response.Write("</td></tr>");
        }
        Response.Write("</table>");
    }

delete.aspx

当用户点击后删除链接后,我们跳转到delete页面,并且传入要删除数据的关键字段值,在delete页面执行删除操作,成功后跳转回去。

protected void Page_Load(object sender, EventArgs e)
    {
        string id = Request.QueryString["id"];//从url中获取id字段值 此处的'id'是删除超链接中设定的名字
        string sql = "delete from tbnews where id="+id;//id是我们定义的字符串 直接拼接就好了
        SqlCommand cmd = DB.comd(sql);
        int i = cmd.ExecuteNonQuery();
        if (i > 0)
        {
            Response.Redirect("main.aspx");//删除成功  跳转回去
        }
        else 
        {
            Response.Write("<script>alert('删除失败')</script>");
        }
    }

update.aspx

业务逻辑当用户点击更新链接后,我们跳转到update页面,并且传入要更新数据的关键字段值,在update页面,我们通过传入的关键字段值,在数据库中查询出所要更新的信息,放入TextBox控件内,让用户修改,并且在下方提供更新按钮,修改完成后,点击按钮,我们获取当前页面更新后的数据值,通过关键字段的值,在数据库执行update操作,更新成功,跳转回去,显示更新后数据。
update页面我们大概设计如下图 (ps:内容可以用TextBox,然后设置TextMode为MultiLine 多行)
注意: 我们用的是更新新闻的例子,业务场景不同,操作也不同,若执行更新用户名操作,我们还需检验更新的用户名是否唯一。
update.aspx页面
update动态代码架构
在这里插入图片描述
动态代码

public partial class update : System.Web.UI.Page
{
    string id;//string定义在外边 Page_Load和Button1_Click都可以用
    protected void Page_Load(object sender, EventArgs e)
    {
       id = Request.QueryString["id"];//从url中获取id字段值 此处的'id'是删除超链接中设定的名字
       if (!IsPostBack) //页面首次加载
       {
           string sql = "select *from tbnews where id=" + id;
           SqlCommand cmd = new SqlCommand();
           SqlCommand cmd = DB.comd(sql);
           SqlDataReader sdr = cmd.ExecuteReader();
           if (sdr.Read()) 
           {
               TextBox1.Text = sdr["title"].ToString();//显示新闻标题
               TextBox2.Text = sdr["content"].ToString();//显示新闻内容
           }
       }
       //若非首次加载 说明点击了更新按钮 此时不能重置TextBox 
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string title = TextBox1.Text.Trim();//去除空格
        string content = TextBox2.Text.Trim();
        string sql="update tbnews set title='"+title+"',content='"+content+"' where id="+id;
        SqlCommand cmd = DB.comd(sql);
        int i = cmd.ExecuteNonQuery();
        if (i > 0)
        {
            Response.Redirect("main.aspx");//更新成功  跳转回去
        }
        else
        {
            Response.Write("<script>alert('更新失败')</script>");
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1900_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值