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);

}

}

}

}

相关推荐
光头闪亮亮几秒前
电子发票解析工具-c#桌面应用开发-DataGridView表格控件使用详解
c#
逻极2 分钟前
Redis Queue (RQ) 核心原理:轻量任务队列的设计与实践(一句话讲透核心本质)
数据库·redis·bootstrap
泉城老铁6 分钟前
Springboot对接mqtt
java·spring boot·后端
源码_V_saaskw10 分钟前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
TT哇15 分钟前
消息推送机制——WebSocket
java·网络·websocket·网络协议
q***318324 分钟前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存
镜花水月linyi29 分钟前
ConcurrentHashMap 深入解析:从0到1彻底掌握(1.3万字)
java·后端
极客Bob29 分钟前
Java 集合操作完整清单(Java 8+ Stream API)
java
雨中飘荡的记忆30 分钟前
Javassist实战指南
java
Knight_AL37 分钟前
JWT 无状态认证深度解析:原理、优势
java·jwt