使用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 ...
随机推荐
- JAVA面试题:输出100以内所有的素数
转载:https://www.cnblogs.com/onway/archive/2012/11/15/2771912.html Java输出1-100中所有的素数 很多人笔试时都会遇到这个问题,小农 ...
- css盒布局-省份选择盘的实现
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- linux软件deb打包及开机管理员自启动
环境:Ubuntu 18.04/16.04 Qt:5.12.6 一 deb打包 1.建立目录结构 2.目录内容 1) 子目录DC520: Get以上内容步骤: (1) 创建目录DC520(自己软 ...
- IPFS矿池集群方案详解
IPFS作为一项分布式存储技术,可以说是web3.0发展的基石.关于IPFS的产业,如存储.技术.矿机.矿池等也发展得非常迅速. 什么是单机挖矿? 单机挖矿就是一台机器就是一个节点,一台机器就完成挖矿 ...
- [React Hooks长文总结系列一]初出茅庐,状态与副作用
写在开头 React Hooks在我的上一个项目中得到了充分的使用,对于这个项目来说,我们跳过传统的类组件直接过渡到函数组件,确实是一个不小的挑战.在项目开发过程中也发现项目中的其他小伙伴(包括我自己 ...
- java例题_37 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位。
1 /*37 [程序 37 报数] 2 题目:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位. 4 */ 5 ...
- 《环形队列》游戏高《TPS》模式下减少cpu线程切换
序言 什么高TPS?QPS,其实很多人都知道,还有人说大数据,大流量这些关键词夜以继日的出现在我们眼前: 针对高TPS,QPS这些词汇还有一个次可能比较陌生那就是CCU,tps,qps接受满天飞,CC ...
- [Kong 与 Konga 与 Postgres数据库] 之 Kuberneres 部署
1.Kong的概述 Kong是一个clould-native.快速的.可扩展的.分布式的微服务抽象层(也称为API网关.API中间件或在某些情况下称为服务网格)框架.Kong作为开源项目在2015年推 ...
- Linux(六):系统运维常用命令
实际的生产环境下,不论是研发还是运维,或多或少的得面对在linux上定位问题这个关卡,这里介绍一下linux环境下一些状态查看常用的命令. 系统资源监控 总体资源占用情况查看 命令:top 像wind ...
- C#补位函数PadLeft和PadRight
左边补位 PadLeft 用法: string str = "100"; str.PadLeft(5,'0') 输出:00100 右边补位 PadRight 用法: str.Pad ...