Добавление данных с помощью подзапросов
Glossary Item Box
Примеры использования класса InsertSelect для получения данных с помощью подзапросов
Пакет с конфигурационным веб-сервисом, реализующим приведенные ниже примеры, можно скачать по ссылке.
Код в примерах показывает различные способы передачи параметров в запрос. При разработке проекта учитывайте, что в метод Column.Const не следует передавать параметры, контролируемые пользователем, так как это может привести к потенциальным sql-инъекциям.
Пример 1
public string GetSqlTextExample(string contactName, string accountName) { var result = ""; var id = Guid.NewGuid(); var selectQuery = new Select(UserConnection) .Column(Column.Parameter(contactName)) .Column("Id") .From("Account") .Where("Name").IsEqual(Column.Parameter(accountName)) as Select; var insertSelectQuery = new InsertSelect(UserConnection) .Into("Contact") .Set("Name", "AccountId") .FromSelect(selectQuery); result = insertSelectQuery.GetSqlText(); return result; }
Пример 2
public string InsertContactWithAccount(string contactName, string accountName) { contactName = contactName ?? "Unknown contact"; accountName = accountName ?? "Unknown account"; var id = Guid.NewGuid(); var selectQuery = new Select(UserConnection) .Column(Column.Parameter(contactName)) .Column("Id") .From("Account") .Where("Name").IsEqual(Column.Parameter(accountName)) as Select; var insertSelectQuery = new InsertSelect(UserConnection) .Into("Contact") .Set("Name", "AccountId") .FromSelect(selectQuery); var affectedRows = insertSelectQuery.Execute(); var result = $"Inserted new contact with name '{contactName}'" + $" and account '{accountName}'." + $" Affected {affectedRows} rows."; return result; }
Пример 3
public string InsertAllAccountsContact(string contactName) { contactName = contactName ?? "Unknown contact"; var id = Guid.NewGuid(); var insertSelectQuery = new InsertSelect(UserConnection) .Into("Contact") .Set("Name", "AccountId") .FromSelect( new Select(UserConnection) .Column(Column.Parameter(contactName)) .Column("Id") .From("Account") as Select); var affectedRows = insertSelectQuery.Execute(); var result = $"Inserted {affectedRows} new contacts with name '{contactName}'"; return result; }
Смотрите также: