Дано:
Имеется база данных с табличкой users(столбцы userID, и userName)
Условие:
Хочется инструмент который позволял бы быстро делать простейшие действия, но при этом был бы достаточно гибким для действий специфических.
Мое решение:
Имеется база данных с табличкой users(столбцы userID, и userName)
Условие:
Хочется инструмент который позволял бы быстро делать простейшие действия, но при этом был бы достаточно гибким для действий специфических.
Мое решение:
public static class SqlService
{
private static string connectionString = "CONNECTION_STRING_HERE";
// это позволит нам быстро создавать соединение
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,
string userName,
SqlConnection connection = null) {
//если соединение не передается в аргументе создаем новое
SqlConnection con = connection ?? Connection;
SqlCommand com =
new SqlCommand("INSERT INTO users(userID, userName)"
+ " VALUES(@userID, @userName)", con);
com.Parameters.Add("@userID", SqlDbType.UniqueIdentifier);
com.Parameters.Add("@userName", SqlDbType.NVarChar, 256);
com.Parameters["@userID"].Value = userID;
com.Parameters["@userName"].Value = userName;
try {
com.myExecute();
}
catch { throw; }
}
public static void DeleteUser(Guid userID,
SqlConnection connection = null) {
SqlConnection con = connection ?? Connection;
SqlCommand com = new SqlCommand("DELETE FROM users"
+ " WHERE userID=@userID", con);
com.Parameters.Add("@userID", SqlDbType.UniqueIdentifier);
com.Parameters["@userID"].Value = userID;
try {
com.myExecute();
}
catch { throw; }
}
}
Пример использования:static void Example() {
Guid newUserID = Guid.NewGuid();
// простое действие
// соединение создалось, открылось и закрылось
SqlService.AddUser(newUserID, "MrSmith");
// специфичное действие
using (SqlConnection connection = SqlService.Connection) {
connection.Open();
//команда выполнилась, соединение осталось открытым
SqlService.DeleteUser(newUserID, connection);
//выполняем любые действия используя то же соединение
SqlCommand specCom = new SqlCommand(specComText, connection);
specCom.ExecuteNonQuery();
}
}
