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 parameters0) // 假设每个查询对应一组参数

{

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

}

}

}

}

相关推荐
IvorySQL7 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
曹牧7 小时前
C#:未被引用的函数
c#
刘胡子大叔7 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用7 小时前
Spring基础使用
java·后端·spring
代码什么用8 小时前
Spring对IoC的实现
数据库·spring
Su米苏8 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
码云数智-园园8 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁8 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
蜗牛互联网8 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西9 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis