前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Asp.NetCore Web开发之ADO.Net

Asp.NetCore Web开发之ADO.Net

作者头像
宿春磊Charles
发布2022-03-29 09:29:09
7360
发布2022-03-29 09:29:09
举报
文章被收录于专栏:DotNet 致知

Asp.NetCore可以说是.Net平台开发网站的一大利器,最近的一大段时间,就要跟大家分享,如何使用这一利器开发网站项目。

要学习网站开发,首先要学习如何使用ADO.Net进行数据库数据的增删改查。这一节就先从Ado.net开始。

.Net平台已经封装好了一套操作数据库的流程(Ado.net),我们只需拿来即用即可,我们以连接SQL Server为例,首先要引用命名空间:

代码语言:javascript
复制
using System.Data.SqlClient;

该命名空间位于using System.Data下,我们要用它去连接SQL server的话,就要引用其SqlClient这个包。使用其连接数据库也很简单,我们先来看普通版,需要用到两个类:

SqlConnection 和 SqlCommand 一个类负责连接,一个类负责执行sql语句

请看如下代码:

代码语言:javascript
复制
using(SqlConnection connection=new SqlConnection("ConnectionString"))
    {
        using (SqlCommand command=new SqlCommand(T-Sql, connection))
        {
            command.Parameters.AddRange(pms);
            connection.Open();
            return command.ExecuteNonQuery();
        }
    }

首先,实例化连接对象,该对象的构造方法可以接收一个参数,这个参数就是数据库连接字符串,除了构造传参之外,我们也可以通过以下方式为其赋值。

代码语言:javascript
复制
connection.ConnectionString="ConnectionString";

实例化连接对象以后,接着实例化执行对象,该对象的构造需要sql语句和连接对象,同样的,也可以用属性赋值的方式实现这一操作,另外,如果语句中含有sql参数(实际上,为了防止sql注入,使用sql参数是必要的。),还要使用SqlParameter类,生成参数对象,并赋值。

代码语言:javascript
复制
 SqlParameter parameter=new SqlParameter("@cunumber", customernumber);//参数名,实际值

如果是单个值,可以通过commond.parameters.Add()方法添加,或者使用AddRange()添加参数数组。

执行方法最常用的就三种,一种服务于查,一种服务于增删改,一种服务于执行聚合函数的语句。

代码语言:javascript
复制
command.ExecuteReader();//执行查,返回SqlDataReader对象,通过该对象可以遍历获取所有查询到的数据
command.ExecuteNonQuery();//执行增删改,返回int(也就是受影响的行数)
command.ExecuteScalar();//执行带聚合函数的语句,返回object

第2,3种的返回值可以直接使用,这里不再演示,下面讲解一下,如何使用返回的SqlDataReader对象遍历查询到的数据。

代码语言:javascript
复制
 SqlDataReader reader = comm.ExecuteReader();
    if (reader.HasRows)
    {
        reader.Read();
        reader[0];//获取本行第一列数据
        reader.GetString(1);//获取第二列数据,以string类型读取
    }   

这个对象有一个属性,HasRows,该bool值反映此次查询是否查到了值。它的read()方法是读取下一条数据,返回一个bool值,当读取到最后一行以后,返回false,通常的用法就是判断是否有值,如果有值就用while循环读取数据,读取数据使用reader[索引]的形式,或者使用reader.Get[Type]的形式。

使用完毕后,要调用连接对象的Close()方法,关闭连接,并且最好再调用Dispose()方法释放掉连接。若使用using,则系统会自动释放。

有些时候,我们需要一次性更改多个表中的数据,一条执行失败就要回滚数据,这就要用到ADO.Net中的事务:

代码语言:javascript
复制
 using (SqlConnection connection = new SqlConnection(connectionString))
  {
      connection.Open();
      //创建一个命令对象
      using (SqlCommand command = connection.CreateCommand())
      {
          //创建一个事务对象
          using (SqlTransaction transaction = connection.BeginTransaction())
          {
              try
              {
                  //传入连接对象
                  command.Connection = connection;
                  //传入事务对象
                  command.Transaction = transaction;
                  command.Parameters.AddRange(parameters);
                  //执行事务
                  for (int i = 0; i < commStrings.Length; i++)
                  {
                      //赋值sql语句,执行,下一循环,执行下一条语句
                      command.CommandText = commStrings[i];
                      if (command.ExecuteNonQuery() == 0)
                      {
                          throw new Exception("执行异常");
                      }
                  }
                  //没有问题直接提交事务
                  transaction.Commit();
                  return 1;
              }
              catch (Exception e)
              {
                  //出了问题就回滚事务
                  transaction.Rollback();
                  return 0;
              }
          }
      }

事务的用法也很简单,请读者仔细阅读代码,此处不再赘述,另外需要注意一点,执行的多条命令,公用传入的这一组参数,不要重复传参。

时间仓促,笔力有限,如有不解的地方,可以给我留言,我会为你解答,本节到此结束...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet 致知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档