You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

197 lines
6.2 KiB

2 years ago
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PSqlSeverWrapper
{
public class PSqlServer
{
public static string ServerName { get; set; }
public static string DatabaseName { get; set; }
public static string UserId { private get; set; }
public static string Password { private get; set; }
public static int MinPoolSize { get; set; } = 20;
public static int MaxPoolSize { get; set; } = 100;
public static int TimeOut { get; set; } = 15;
private static string ConnString
{
get { return $"server={ServerName}; database={DatabaseName}; uid={UserId}; pwd={Password}; min pool size = {MinPoolSize}; max pool size = {MaxPoolSize}; connection timeout = {TimeOut};"; }
}
public static SqlConnection Connection
{
get
{
if (!CheckBasicInfo())
throw new ArgumentException("Invalid connection info");
2 years ago
return new SqlConnection(ConnString);
2 years ago
}
}
public static void ExecuteQuery(string query)
{
2 years ago
using (SqlConnection conn = Connection)
2 years ago
{
2 years ago
SqlCommand command = new SqlCommand(query, conn);
2 years ago
2 years ago
conn.Open();
2 years ago
command.ExecuteNonQuery();
2 years ago
conn.Close();
2 years ago
}
}
2 years ago
public static void ExecuteQuery(SqlConnection openedConn, string query)
{
SqlCommand command = new SqlCommand(query, openedConn);
command.ExecuteNonQuery();
}
2 years ago
public static void ExecuteQueryAsync(SqlConnection openedConn, string query)
{
2 years ago
SqlCommand command = new SqlCommand(query, openedConn);
command.ExecuteNonQueryAsync();
2 years ago
}
public static void ExecuteQuery(string[] queries)
2 years ago
{
using (SqlConnection conn = Connection)
2 years ago
{
2 years ago
conn.Open();
SqlTransaction trans = conn.BeginTransaction();
2 years ago
2 years ago
try
{
for (int i = 0; i < queries.Length; i++)
{
2 years ago
SqlCommand command = new SqlCommand(queries[i], conn);
2 years ago
command.Transaction = trans;
2 years ago
command.ExecuteNonQuery();
2 years ago
}
2 years ago
2 years ago
trans.Commit();
}
catch (Exception ex)
{
Debug.WriteLine(ex);
trans.Rollback();
2 years ago
}
2 years ago
conn.Close();
}
}
public static void BulkCopy(string tableName, DataTable table, string[] dbColumnMap = null)
2 years ago
{
2 years ago
using (SqlConnection conn = Connection)
{
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(conn);
sqlBulkCopy.DestinationTableName = tableName;
if (dbColumnMap != null && table.Columns.Count == dbColumnMap.Length)
2 years ago
{
2 years ago
for (int i = 0; i < table.Columns.Count; i++)
{
string colName = table.Columns[i].ColumnName;
sqlBulkCopy.ColumnMappings.Add(colName, dbColumnMap[i]);
}
2 years ago
}
2 years ago
conn.Open();
sqlBulkCopy.WriteToServer(table);
conn.Close();
2 years ago
}
2 years ago
}
public static void BulkCopyAsync(string tableName, DataTable table, string[] dbColumnMap = null)
{
using (SqlConnection conn = Connection)
2 years ago
{
2 years ago
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(conn);
sqlBulkCopy.DestinationTableName = tableName;
if (dbColumnMap != null && table.Columns.Count == dbColumnMap.Length)
{
for (int i = 0; i < table.Columns.Count; i++)
{
string colName = table.Columns[i].ColumnName;
sqlBulkCopy.ColumnMappings.Add(colName, dbColumnMap[i]);
}
}
conn.Open();
sqlBulkCopy.WriteToServerAsync(table);
conn.Close();
}
}
public static void ExecuteQueryAsync(string query)
{
using (SqlConnection conn = Connection)
{
SqlCommand command = new SqlCommand(query, conn);
conn.Open();
command.ExecuteNonQueryAsync();
conn.Close();
2 years ago
}
}
public static DataSet ExecuteSelectQuery(string query)
{
2 years ago
using (SqlConnection conn = Connection)
2 years ago
{
2 years ago
SqlDataAdapter adapter = new SqlDataAdapter(query, conn);
DataSet dataSet = new DataSet();
2 years ago
2 years ago
conn.Open();
adapter.Fill(dataSet);
conn.Close();
2 years ago
2 years ago
return dataSet;
2 years ago
}
}
public static DataSet ExecuteSelectQuery(SqlConnection openedConn, string query)
{
2 years ago
DataSet dataSet = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(query, openedConn);
adapter.Fill(dataSet);
2 years ago
2 years ago
return dataSet;
2 years ago
}
public static SqlDataAdapter GetAdapterSelectQuery(SqlConnection openedConn, string query, bool withCommandBuilder = true)
{
2 years ago
SqlDataAdapter adapter = new SqlDataAdapter(query, openedConn);
if (withCommandBuilder)
{
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.DeleteCommand = builder.GetDeleteCommand();
adapter.InsertCommand = builder.GetInsertCommand();
2 years ago
}
2 years ago
return adapter;
2 years ago
}
private static bool CheckBasicInfo()
{
if (string.IsNullOrEmpty(ServerName))
return false;
if (string.IsNullOrEmpty(DatabaseName))
return false;
if (string.IsNullOrEmpty(UserId))
return false;
if (string.IsNullOrEmpty(Password))
return false;
return true;
}
}
}