c# sqlhelper类

主要包含了事务进来,是个亮点:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Net.Mail;

using System.Net;

namespace MIAS_DigitalTool_Platform.SqlhelperClass

{

public static class sqlHelper

{

public static readonly string connectionString = StaticClass.global.connectionCurrent;

// 数据库连接字符串,根据实际情况进行修改

//public static readonly string connectionString = "Data Source=192.168.70.8;Initial Catalog=数据库名;Integrated Security=True";

// 执行查询并返回DataTable

public static DataTable ExecuteDataTable(string sql, CommandType commandType, params SqlParameter[] parameters)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlCommand command = new SqlCommand(sql, connection);

command.CommandType = commandType;

if (parameters != null)

{

foreach (SqlParameter parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

try

{

connection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(command);

DataTable dataTable = new DataTable();

adapter.Fill(dataTable);

return dataTable;

}

catch (Exception ex)

{

Serilog.Log.Information(ex.Message);

throw new Exception("ExecuteDataTable Error: " + ex.Message);

}

}

}

// 执行非查询操作,返回受影响的行数

public static int ExecuteNonQuery(string sql, CommandType commandType, params SqlParameter[] parameters)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlCommand command = new SqlCommand(sql, connection);

command.CommandType = commandType;

if (parameters != null)

{

foreach (SqlParameter parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

try

{

connection.Open();

return command.ExecuteNonQuery();

}

catch (Exception ex)

{

Serilog.Log.Information(ex.Message);

throw new Exception("ExecuteNonQuery Error: " + ex.Message);

}

}

}

// 执行查询并返回单个值

public static object ExecuteScalar(string sql, CommandType commandType, params SqlParameter[] parameters)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

SqlCommand command = new SqlCommand(sql, connection);

command.CommandType = commandType;

if (parameters != null)

{

foreach (SqlParameter parameter in parameters)

{

command.Parameters.Add(parameter);

}

}

try

{

connection.Open();

return command.ExecuteScalar();

}

catch (Exception ex)

{

Serilog.Log.Information(ex.Message);

throw new Exception("ExecuteScalar Error: " + ex.Message);

}

}

}

// 执行事务性操作的方法,支持参数化查询

public static void ExecuteTransaction(string[] sqlQueries, SqlParameter[][] parameters, CommandType commandType)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

connection.Open();

using (SqlTransaction transaction = connection.BeginTransaction())

{

try

{

foreach (string sqlQuery in sqlQueries)

{

// 为每个查询创建SqlCommand对象,并添加参数

SqlCommand command = new SqlCommand(sqlQuery, connection, transaction);

command.CommandType = commandType; // 可以是CommandType.Text或CommandType.StoredProcedure

// 如果有参数,添加到SqlCommand对象

if (parameters != null && parameters.Length > 0)

{

foreach (SqlParameter parameter in parameters[0]) // 假设每个查询对应一组参数

{

command.Parameters.Add(parameter);

}

}

// 执行命令

command.ExecuteNonQuery();

}

transaction.Commit();

}

catch (Exception ex)

{

Serilog.Log.Information(ex.Message);

transaction.Rollback();

throw new Exception("Transaction Error: " + ex.Message);

}

}

}

}

public static void SMTP(string from,string fromAlias, string[] to, string subject, string body, string ipaddr, int port, string creditAccount, string password)

{

try

{

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

// 创建电子邮件消息对象

MailMessage message = new MailMessage

{

From = new MailAddress(from, fromAlias)

};

foreach (string recipient in to)

{

message.To.Add(new MailAddress(recipient));

}

// 设置邮件主题和正文

message.Subject = subject;

message.Body = body;

message.BodyEncoding = Encoding.UTF8;

// 创建SMTP客户端

SmtpClient client = new SmtpClient(ipaddr, port); // SMTP服务器地址和端口

client.EnableSsl = false; // 如果服务器支持SSL

如果SMTP服务器需要身份验证

client.Credentials = new NetworkCredential(creditAccount, password);

// 发送邮件

client.Send(message);

Serilog.Log.Warning("邮件发送成功!");

}

catch (Exception ex)

{

Serilog.Log.Error(ex.Message);

}

}

}

}

相关推荐
天天摸鱼的java工程师14 分钟前
秒杀系统中:如何防止超卖和库存超扣?
java·后端
BillKu17 分钟前
sql中like and not like的优化
数据库·sql
CodeCipher21 分钟前
Java基础复习之继承
java·开发语言
录大大i24 分钟前
SQL Developer 表复制
数据库·oracle
BillKu29 分钟前
Java延时
java·开发语言
代码的知行者38 分钟前
分布式数据库中间件-Sharding-JDBC
数据库·分布式·中间件
啾啾Fun39 分钟前
Java面试题:分布式ID时钟回拨怎么处理?序列号耗尽了怎么办?
java·分布式·分布式id·八股
jarenyVO1 小时前
RabbitMQ全面学习指南
数据库·学习·rabbitmq
qq_534452521 小时前
【算法 day02】LeetCode 209.长度最小的子数组 | 59.螺旋矩阵II
java·算法·leetcode·职场和发展
向上的车轮1 小时前
语言特性适用的场景:卫星、火箭控制系统用什么开发语言?
java·开发语言·c++·c#·c·ada