使用C#进行数据库增删改查ADO.NET(三)
文章代码如下:
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(三)的更多相关文章
- 使用C#进行数据库增删改查ADO.NET(一)
这节讲一下如何使用C#进行数据库的增删改查操作,本节以SQL Server数据库为例. .NET 平台,使用ADO.NET 作为与数据库服务器的桥梁,我们通过ADO.NET就可以使用C#语言操作数据库 ...
- 使用C#进行数据库增删改查ADO.NET(二)
这节接着讲用C#进行数据库CRUD,高级部分. 事务: 事务是执行一批sql语句,如果中途失败,全部回滚,数据不会受影响,中途没有出错则会提交事务,真正对数据进行修改.C#提供了SqlTransac ...
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- go——beego的数据库增删改查
一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Yii2.0高级框架数据库增删改查的一些操作
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- WindowsPhone8 数据库增删改查
今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INo ...
随机推荐
- 关于go中并发的初步理解
1.一些概念的介绍: 概念 描述 进程 在内存中的程序.有自己独立的独占的虚拟 CPU .虚拟的 Memory.虚拟的 IO devices. (1) 每一进程占用独立的地址空间. 此处的地址空间包括 ...
- Cai Xukun and Orz Pandas Gym - 102309C
题目链接:https://vjudge.net/problem/Gym-102309C 题意:给定蔡徐坤投篮的位置和篮筐的位置以及最大初速度,求一个初速度和时间. 思路:一开始我以为要用到二分,后面仔 ...
- C#上机实验(三)
源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac ...
- PTA 统计二叉树度为1的结点个数
6-3 统计二叉树度为1的结点个数 (10 分) 本题要求实现一个函数,可统计二叉树中度为1的结点个数. 函数接口定义: int NodeCount ( BiTree T); T是二叉树树根指针, ...
- Springboot2.x集成lettuce连接redis集群报超时异常Command timed out after 6 second(s)
文/朱季谦 背景:最近在对一新开发Springboot系统做压测,发现刚开始压测时,可以正常对redis集群进行数据存取,但是暂停几分钟后,接着继续用jmeter进行压测时,发现redis就开始突然疯 ...
- Istio 网络弹性 实践 之 故障注入 和 调用重试
网络弹性介绍 网络弹性也称为运维弹性,是指网络在遇到灾难事件时快速恢复和继续运行的能力.灾难事件的范畴很广泛,比如长时间停电.网络设备故障.恶意入侵等. 重试(attempts) Istio 重试机制 ...
- 18. vue-router案例-tabBar导航
目标: 做一个导航tabbar 一. 分析 我们的目标是做一个导航tabbar, 要求 这个导航不仅可以在一个页面使用, 可以在多个页面通用 每个页面的样式可能不一样 每个页面的图标, 文字可能不一样 ...
- .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate
在ASP.NET MVC 中使用Jntemplate 上一篇我们详细介绍了jntemplate的标签语法,本篇文章将继续介绍如何在ASP.NET MVC 中使用Jntemplate. 一.使用Jnte ...
- Dynamics CRM实体系列之窗体
本节开始讲Dynamics CRM的窗体排版和设计,窗体也就是我们实际可以看到的表单界面.Dynamics CRM提供了一套独立的表单模板设计引擎,可以很方便的为开发者提供无代码开发,只需要简单的拖动 ...
- SpringCloud LoadBalancer灰度策略实现
如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 ...