wiki:blog:абстракция_от_sql_в_c
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | wiki:blog:абстракция_от_sql_в_c [2019/01/05 12:32] (current) – created kpc | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Абстракция от Sql в C# ====== | ||
+ | Дано: | ||
+ | Имеется база данных с табличкой users(столбцы userID, и userName) | ||
+ | |||
+ | Условие: | ||
+ | Хочется инструмент который позволял бы быстро делать простейшие действия, | ||
+ | |||
+ | Мое решение: | ||
+ | |||
+ | <code c#> | ||
+ | public static class SqlService | ||
+ | { | ||
+ | private static string connectionString = " | ||
+ | |||
+ | // это позволит нам быстро создавать соединение | ||
+ | public static SqlConnection Connection { | ||
+ | get { | ||
+ | return new SqlConnection(connectionString); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // выполняем команду оставляя соединение в исходном состоянии | ||
+ | private static void myExecute(this SqlCommand command) { | ||
+ | bool connectionOpened = | ||
+ | (command.Connection.State == ConnectionState.Open); | ||
+ | |||
+ | if (!connectionOpened) { | ||
+ | try { | ||
+ | command.Connection.Open(); | ||
+ | } | ||
+ | catch { throw; } | ||
+ | } | ||
+ | |||
+ | try { | ||
+ | command.ExecuteNonQuery(); | ||
+ | } | ||
+ | catch { throw; } | ||
+ | finally { | ||
+ | if (!connectionOpened) { | ||
+ | command.Connection.Close(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public static void AddUser(Guid userID, | ||
+ | | ||
+ | | ||
+ | //если соединение не передается в аргументе создаем новое | ||
+ | SqlConnection con = connection ?? Connection; | ||
+ | SqlCommand com = | ||
+ | new SqlCommand(" | ||
+ | + " VALUES(@userID, | ||
+ | com.Parameters.Add(" | ||
+ | com.Parameters.Add(" | ||
+ | com.Parameters[" | ||
+ | com.Parameters[" | ||
+ | try { | ||
+ | com.myExecute(); | ||
+ | } | ||
+ | catch { throw; } | ||
+ | } | ||
+ | |||
+ | public static void DeleteUser(Guid userID, | ||
+ | SqlConnection connection = null) { | ||
+ | SqlConnection con = connection ?? Connection; | ||
+ | SqlCommand com = new SqlCommand(" | ||
+ | + " WHERE userID=@userID", | ||
+ | com.Parameters.Add(" | ||
+ | com.Parameters[" | ||
+ | try { | ||
+ | com.myExecute(); | ||
+ | } | ||
+ | catch { throw; } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Пример использования: | ||
+ | <code c#> | ||
+ | static void Example() { | ||
+ | Guid newUserID = Guid.NewGuid(); | ||
+ | |||
+ | // простое действие | ||
+ | // соединение создалось, | ||
+ | SqlService.AddUser(newUserID, | ||
+ | |||
+ | // специфичное действие | ||
+ | using (SqlConnection connection = SqlService.Connection) { | ||
+ | connection.Open(); | ||
+ | |||
+ | // | ||
+ | SqlService.DeleteUser(newUserID, | ||
+ | |||
+ | // | ||
+ | SqlCommand specCom = new SqlCommand(specComText, | ||
+ | specCom.ExecuteNonQuery(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | original url: http:// |
wiki/blog/абстракция_от_sql_в_c.txt · Last modified: 2019/01/05 12:32 by kpc