使用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 ...
随机推荐
- Masterwoker模式
1 public class Task { 2 3 private int id; 4 private int price ; 5 public int getId() { 6 return id; ...
- SEO优化基础知识
一.标点符号的重要性 很多人忽略了标点符号对爬虫的重要性,爬虫并不是对所有标点符号都爬取,下面列举几个对关键字分隔有帮助的符号. 1.1.逗号( , ) ==> 千万千万要使用英文的逗号,而不是 ...
- css字体的属性
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- python网络编程-TCP服务端的开发
#TCP服务端开发 2 #方法说明 3 """ 4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进 行绑定,表示本机的任何一个ip地址 ...
- 想了很久,一道Microsoft的笔试题目 —— Reversing Linked List
Reversing Linked List Given a constant K and a singly linked list L, you are supposed to reverse the ...
- 在SSM框架中如何将图片上传到数据库中
今天我们来看看SSM中如何将图片转换成二进制,最后传入到自己的数据库中,好了,废话不多说,我们开始今天的学习,我这里用的编辑器是IDEA 1.导入图片上传需要的jar依赖包 1 <depende ...
- Github Actions 还能做这些事
前言 最近公司内部项目的发布流程接入了 GitHub Actions,整个体验过程还是比较美好的:本文主要目的是对于没有还接触过 GitHub Actions的新手,能够利用它快速构建自动测试及打包推 ...
- CMS前世今生
CMS一直是面试中的常考点,今天我们用通俗易懂的语言简单介绍下. 垃圾回收器为什么要分区分代? 如上图:JVM虚拟机将堆内存区域分代了,先生代是朝生夕死的区域,老年代是老不死的区域,不同的年代对象有不 ...
- 3w 字长文爆肝 Java 基础面试题!太顶了!!!
hey guys ,这不是也到了面试季了么,cxuan 又打算重新写一下 Java 相关的面试题,先从基础的开始吧,这些面试题属于基础系列,不包含多线程相关面试题和 JVM 相关面试题,多线程和 JV ...
- 带你全面认识CMMI V2.0(三)——实践域
实践域以往被称为称为"过程域",如:配置管理,现在叫做"实践域".对于2.0版,则有25个适用的实践域.与以前版本的CMMI模型一样,"实践域&quo ...