|
|
@ -0,0 +1,214 @@ |
|
|
|
|
|
|
|
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"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return new SqlConnection(ConnString); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void ExecuteQuery(string query) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
using (SqlConnection conn = Connection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
conn.Open(); |
|
|
|
|
|
|
|
SqlCommand command = new SqlCommand(query, conn); |
|
|
|
|
|
|
|
command.ExecuteNonQuery(); |
|
|
|
|
|
|
|
Connection.Close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void ExecuteQuery(SqlConnection openedConn, string query) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
SqlCommand command = new SqlCommand(query, openedConn); |
|
|
|
|
|
|
|
command.ExecuteNonQuery(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void ExecuteQueryAsync(SqlConnection openedConn, string query) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
SqlCommand command = new SqlCommand(query, openedConn); |
|
|
|
|
|
|
|
command.ExecuteNonQueryAsync(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void ExecuteQuery(string[] queries) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
using (SqlConnection conn = Connection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
conn.Open(); |
|
|
|
|
|
|
|
ExecuteQuery(conn, "BEGIN TRAN;"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < queries.Length; i++) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
SqlCommand command = new SqlCommand(queries[i], conn); |
|
|
|
|
|
|
|
command.ExecuteNonQuery(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExecuteQuery(conn, "COMMIT TRAN;"); |
|
|
|
|
|
|
|
Connection.Close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void ExecuteQueryAsync(string query) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
using (SqlConnection conn = Connection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
conn.Open(); |
|
|
|
|
|
|
|
SqlCommand command = new SqlCommand(query, conn); |
|
|
|
|
|
|
|
command.ExecuteNonQueryAsync(); |
|
|
|
|
|
|
|
Connection.Close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static DataSet ExecuteSelectQuery(string query) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
using (SqlConnection conn = Connection) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DataSet dataSet = new DataSet(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
conn.Open(); |
|
|
|
|
|
|
|
SqlDataAdapter adapter = new SqlDataAdapter(query, conn); |
|
|
|
|
|
|
|
adapter.Fill(dataSet); |
|
|
|
|
|
|
|
Connection.Close(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return dataSet; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static DataSet ExecuteSelectQuery(SqlConnection openedConn, string query) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
DataSet dataSet = new DataSet(); |
|
|
|
|
|
|
|
SqlDataAdapter adapter = new SqlDataAdapter(query, openedConn); |
|
|
|
|
|
|
|
adapter.Fill(dataSet); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return dataSet; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static SqlDataAdapter GetAdapterSelectQuery(SqlConnection openedConn, string query, bool withCommandBuilder = true) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
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(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return adapter; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Debug.WriteLine(ex.ToString()); |
|
|
|
|
|
|
|
throw; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |