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

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

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

using System.Data.SqlClient;

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

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

请看如下代码:

using(SqlConnection connection=new SqlConnection("ConnectionString"))   
{
using (SqlCommand command=new SqlCommand(T-Sql, connection))
{
   command.Parameters.AddRange(pms);
      connection.Open();
       return command.ExecuteNonQuery();
  }
}

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

connection.ConnectionString="ConnectionString";

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

 SqlParameter parameter=new SqlParameter("@cunumber", customernumber);//参数名,实际值

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

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

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

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

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中的事务:

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

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

Asp.NetCore Web开发之ADO.Net的更多相关文章

  1. Asp.NetCore Web开发之RazorPage

    这节讲一下Razor页面. 首先要明确,Razor 不是一种编程语言.它是服务器端的标记语言,配合C#语言,就可以像PHP语言语言一样(但它们并不相同),处理HTML页面逻辑.它是Asp.NetCor ...

  2. Asp.NetCore Web开发之Nlog日志配置

    接着讲基于ASP .net Core 的web开发,这节主要讲一下如何使用和配置Nlog进行日志记录. 日志在开发中的作用是很重要的,使用日志,程序出了错误可以及时捕获并记录下来,开发人员可以通过日志 ...

  3. Asp.NetCore Web开发之模型验证

    在开发中,验证表单数据是很重要的一环,如果对用户输入的数据不加限制,那么当错误的数据提交到后台后,轻则破坏数据的有效性,重则会导致服务器瘫痪,这是很致命的. 所以进行数据有效性验证是必要的,我们一般通 ...

  4. Web开发之Tomcat&Servlet

    <!doctype html>01 - JavaEE - Tomcat&Servlet figure:first-child { margin-top: -20px; } #wri ...

  5. Vim下的Web开发之html,CSS,javascript插件

    Vim下的Web开发之html,CSS,javascript插件   HTML 下载HTML.zip 解压HTML.zip,然后将里面的所有文件copy到C:\Program Files\Vim\vi ...

  6. 移动web开发之rem适配布局

    移动web开发之rem适配布局 方案: 页面布局文字能否随着屏幕大小变化而变化 流式布局和flex布局主要针对于宽度布局,那高度如何布局? 怎样让屏幕发生变化的时候元素高度和宽度等比例缩放? 1. r ...

  7. Asp.NetCore Web应用程序中的请求管道和中间件

    你是否会迷惑当我们请求一个ASP.NetWeb应用程序以后,它是怎么处理这些请求的,后台是怎么工作的,今天就讲一下Asp.NetCore Web应用程序中的请求处理过程. 上一节,我们讲到,Start ...

  8. Asp.NetCore Web开发之创建项目

    ​这一节,开始讲一下如何创建一个Asp.netCore Web项目,有两种常用的方式,一种是通过.NetCore SDK使用命令创建,另一种如果你使用的VisualStudio,可以直接根据引导创建. ...

  9. Asp.NetCore Web开发之初始文件解析

    在写代码之前,有必要了解一下.net帮我们生成的文件都是干什么用的,在开发过程中他们都负责那些地方(下面以MVC模板举例). 先简单介绍一下什么是MVC,MVC(model-view-controll ...

随机推荐

  1. ASP.NET .Core 集成 React SPA 应用

    AgileConfig的UI使用react重写快完成了.上次搞定了基于jwt的登录模式(AntDesign Pro + .NET Core 实现基于JWT的登录认证),但是还有点问题.现在使用reac ...

  2. 一文搞懂如何实现 Go 超时控制

    为什么需要超时控制? 请求时间过长,用户侧可能已经离开本页面了,服务端还在消耗资源处理,得到的结果没有意义 过长时间的服务端处理会占用过多资源,导致并发能力下降,甚至出现不可用事故 Go 超时控制必要 ...

  3. Hibernate的Dao层通用设计

    hibernate作为一款优秀的数据库持久化框架,在现实的运用中是非常广泛的.它的出现让不熟悉sql语法的程序员能开发数据库连接层成为一种可能,但是理想与现实永远是有差距的.开发过程中如果只使用hql ...

  4. 学习笔记-vue.js获取file文件数据

    在vue中file不能像其他input一样使用 v-model 双向数据绑定,因为文件选择是只读,只能用onchange监控值得变化. 所有需要使用v-on:change去监控. 例1: <in ...

  5. 201871010129-郑文潇 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh ...

  6. 在Vue中使用sass和less,并解决报错问题(this.getOptions is not a function)

    使用 Less 下载依赖:npm install less less-loader 在mian.js 中添加: import less from "less"; Vue.use(l ...

  7. 【Azure 环境】在Windows系统中 使用Terraform创建中国区Azure资源步骤(入门级)

    Terraform(全称:Hashicorp Terraform )是一种开源工具,用于预配和管理云基础结构. 它将基础结构编入描述云资源拓扑的配置文件中. 这些资源包括虚拟机.存储帐户和网络接口等. ...

  8. (十五)VMware Harbor 标签管理

    1. Harbor提供两种标签用来隔离各种资源(目前只有镜像): 全局级别标签: 由系统管理员管理,用于管理整个系统的镜像.它们可以添加到任何项目下的镜像中. 项目级别标签: 由项目管理员或者系统管理 ...

  9. 超详细!!Spring5框架开发笔记

    Spring5开发教程 简介 spring特性 sping是轻量级的开源的JavaEE框架 Spring可以解决企业应用开发的复杂性 Sping两个核心的部分:IOC和AOC IOC:控制反转.把创建 ...

  10. phpstorm 方法名类名 作者日期 注释

    phpstorm 设置方法名 函数名注释  新建页面作者日期信息注释 官方提供的文档地址: http://www.jetbrains.com/phpstorm/help/creating-php-do ...