文章代码如下:

class Program
{
static void Main (string[] args)
{
//连接数据库
string connString = "server=.;database=Student;user id=sa;pwd=123456";
Console.WriteLine (ADOUtils.ConnDB (connString)); //查询张三的数据
SqlParameter[] parameters = new[] { new SqlParameter ("@sname", "李四"), };
Task<List<StudentModel>> studentInfo = ADOUtils.SelectDBAsync<StudentModel> ("select SID,SName,SGender from StudentInfo where SName=@sname ", parameters);
studentInfo.ContinueWith((result) =>
{
if (studentInfo != null)
foreach (StudentModel studentModel in result.Result)
{
Console.WriteLine(studentModel);
}
else
{
Console.WriteLine("未查询到数据");
}
}); Thread.Sleep(4000); //SqlParameter[] parameters1 = new[] { new SqlParameter ("@gone", 1), new SqlParameter ("@gtwo", 2), };
////将两个人的性别对换。
//string sqlone = "update StudentInfo set SGender=@gone where SID=20200001";
//string sqltwo = "update StudentInfo set SGender=@gtwo where SID=20200002";
//ADOUtils.ExcuteForTransaction (new[] { sqlone, sqltwo }, parameters1); }
} static class ADOUtils
{
private static SqlConnection connection = null; /// <summary>
/// 连接数据库
/// </summary>
/// <param name="connString">数据库连接字符串</param>
/// <returns>是否连接成功 bool</returns>
public static bool ConnDB (string connString)
{
try
{
connection = new SqlConnection (connString);
connection.Open ();
return true;
}
catch
{
connection = null;
return false;
}
} /// <summary>
/// 断开连接
/// </summary>
public static void CloseConnect ()
{
connection.Close ();
connection.Dispose ();
} /// <summary>
/// 执行增,删,改操作
/// </summary>
/// <param name="sql">sal语句</param>
/// <param name="parameters">参数</param>
/// <returns>受影响的行数</returns>
public static int ExcuteSQL (string sql, SqlParameter[] parameters)
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return 0;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} return command.ExecuteNonQuery ();
}
catch
{
return 0;
}
}
} /// <summary>
/// 执行聚合函数操作
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>聚合结果,如果执行出错,返回false</returns>
public static object ExcuteMethods (string sql, SqlParameter[] parameters)
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return 0;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} return command.ExecuteScalar ();
}
catch
{
return false;
}
}
} /// <summary>
/// 执行查询操作(泛型版)
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>数据集合,出错返回null</returns>
public static List<T> SelectDB<T> (string sql, SqlParameter[] parameters) where T : new()
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return null;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} SqlDataReader reader = command.ExecuteReader ();
if (reader.HasRows)
{
List<T> data = new List<T> ();
Type type = typeof (T);
object o = Activator.CreateInstance (type);
while (reader.Read ())
{
foreach (var property in type.GetProperties ())
{
property.SetValue (o, reader[property.Name]);
}
data.Add ((T)o);
}
reader.Close ();
return data;
} return null;
}
catch
{
return null;
}
}
} /// <summary>
/// 执行查询操作
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>数据集合,出错返回null</returns>
public static List<StudentModel> SelectStudentInfo (string sql, SqlParameter[] parameters)
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return null;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} SqlDataReader reader = command.ExecuteReader ();
if (reader.HasRows)
{
List<StudentModel> data = new List<StudentModel> ();
while (reader.Read ())
{
StudentModel sm = new StudentModel ();
sm.SID = reader.GetInt32 (0);
sm.SName = reader.GetString (1);
sm.SGender = reader.GetInt32 (2);
data.Add (sm);
}
reader.Close ();
return data;
} return null;
}
catch
{
return null;
}
}
} /// <summary>
/// 使用事务执行多个增删改任务
/// </summary>
/// <param name="sqls">多个sql语句</param>
/// <param name="parameters">多个sql语句共用的参数</param>
/// <returns>返回受影响的总行数</returns>
public static int ExcuteForTransaction (string[] sqls, SqlParameter[] parameters)
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return 0;
}
using (SqlCommand command = connection.CreateCommand ())
{
using (SqlTransaction transaction = connection.BeginTransaction ())
{
try
{
int count = 0;
command.Transaction = transaction; if (parameters != null)
command.Parameters.AddRange (parameters); foreach (string sql in sqls)
{
command.CommandText = sql;
count += command.ExecuteNonQuery ();
}
transaction.Commit ();
Console.WriteLine ("事务提交");
return count;
}
catch (Exception exception)
{
Console.WriteLine (exception.Message);
Console.WriteLine ("事务回滚");
transaction.Rollback ();
return 0;
}
}
}
} /// <summary>
/// 执行增,删,改操作(异步版)
/// </summary>
/// <param name="sql">sal语句</param>
/// <param name="parameters">参数</param>
/// <returns>受影响的行数</returns>
public static async Task<int> ExcuteAsync (string sql, SqlParameter[] parameters)
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return 0;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} return await command.ExecuteNonQueryAsync ();
}
catch
{
return 0;
}
}
} /// <summary>
/// 执行查询操作(异步泛型版)
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>数据集合,出错返回null</returns>
public static async Task<List<T>> SelectDBAsync<T> (string sql, SqlParameter[] parameters) where T : new()
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return null;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} SqlDataReader reader = await command.ExecuteReaderAsync ();
if (reader.HasRows)
{
List<T> data = new List<T> ();
Type type = typeof (T);
object o = Activator.CreateInstance (type);
while (reader.Read ())
{
foreach (var property in type.GetProperties ())
{
property.SetValue (o, reader[property.Name]);
}
data.Add ((T)o);
}
reader.Close ();
return data;
} return null;
}
catch
{
return null;
}
}
} /// <summary>
/// 执行聚合函数操作(异步版)
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>聚合结果,如果执行出错,返回false</returns>
public static async Task<object> ExcuteMethodsAsync (string sql, SqlParameter[] parameters)
{
if (connection == null)
{
Console.WriteLine ("数据库未连接");
return 0;
} using (SqlCommand command = new SqlCommand (sql, connection))
{
try
{
if (parameters != null)
{
command.Parameters.AddRange (parameters);
} return await command.ExecuteScalarAsync ();
}
catch
{
return false;
}
}
} } class StudentModel
{
public int SID { get; set; }
public string SName { get; set; }
public int SGender { get; set; } public override string ToString ()
{
return $"SID:{SID}\tSName:{SName}\tSGender:{SGender}";
}
}

使用C#进行数据库增删改查ADO.NET(三)的更多相关文章

  1. 使用C#进行数据库增删改查ADO.NET(一)

    这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...

  2. 使用C#进行数据库增删改查ADO.NET(二)

    这节接着讲用C#进行数据库CRUD,高级部分.  事务: 事务是执行一批sql语句,如果中途失败,全部回滚,数据不会受影响,中途没有出错则会提交事务,真正对数据进行修改.C#提供了SqlTransac ...

  3. NX二次开发-NX访问SqlServer数据库(增删改查)C#版

    版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...

  4. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  5. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...

  6. go——beego的数据库增删改查

    一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...

  7. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  8. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  9. WindowsPhone8 数据库增删改查

    今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INo ...

随机推荐

  1. 关于go中并发的初步理解

    1.一些概念的介绍: 概念 描述 进程 在内存中的程序.有自己独立的独占的虚拟 CPU .虚拟的 Memory.虚拟的 IO devices. (1) 每一进程占用独立的地址空间. 此处的地址空间包括 ...

  2. Cai Xukun and Orz Pandas Gym - 102309C

    题目链接:https://vjudge.net/problem/Gym-102309C 题意:给定蔡徐坤投篮的位置和篮筐的位置以及最大初速度,求一个初速度和时间. 思路:一开始我以为要用到二分,后面仔 ...

  3. C#上机实验(三)

    源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac ...

  4. PTA 统计二叉树度为1的结点个数

    6-3 统计二叉树度为1的结点个数 (10 分)   本题要求实现一个函数,可统计二叉树中度为1的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针, ...

  5. Springboot2.x集成lettuce连接redis集群报超时异常Command timed out after 6 second(s)

    文/朱季谦 背景:最近在对一新开发Springboot系统做压测,发现刚开始压测时,可以正常对redis集群进行数据存取,但是暂停几分钟后,接着继续用jmeter进行压测时,发现redis就开始突然疯 ...

  6. Istio 网络弹性 实践 之 故障注入 和 调用重试

    网络弹性介绍 网络弹性也称为运维弹性,是指网络在遇到灾难事件时快速恢复和继续运行的能力.灾难事件的范畴很广泛,比如长时间停电.网络设备故障.恶意入侵等. 重试(attempts) Istio 重试机制 ...

  7. 18. vue-router案例-tabBar导航

    目标: 做一个导航tabbar 一. 分析 我们的目标是做一个导航tabbar, 要求 这个导航不仅可以在一个页面使用, 可以在多个页面通用 每个页面的样式可能不一样 每个页面的图标, 文字可能不一样 ...

  8. .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate

    在ASP.NET MVC 中使用Jntemplate 上一篇我们详细介绍了jntemplate的标签语法,本篇文章将继续介绍如何在ASP.NET MVC 中使用Jntemplate. 一.使用Jnte ...

  9. Dynamics CRM实体系列之窗体

    本节开始讲Dynamics CRM的窗体排版和设计,窗体也就是我们实际可以看到的表单界面.Dynamics CRM提供了一套独立的表单模板设计引擎,可以很方便的为开发者提供无代码开发,只需要简单的拖动 ...

  10. SpringCloud LoadBalancer灰度策略实现

    如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 ...