Перейти к содержимому

Фотография

Проверка выполняемости SQL запроса через ADO connection в C#


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1
batyrLAN

batyrLAN
  • В доску свой
  • 1 722 сообщений
Здравствуйте!
Помогите с советом: есть ли возможность проверки выполняемости SQL запроса на удаление с помощью ADO connection в C#? Вот кусок кода метода для проверки выполняемости SQL-запроса:

public int ExecuteCheck(string sqlstr)
{
object obj1;
ADODB.Connection con = new ADODB.Connection();
con.ConnectionString = cnStr;
con.Open(null, null, null, 0);
+ con.Execute(sqlstr, out obj1, 0);
con.Close();
return 1;
}
Например, sqlstr="DELETE FROM test WHERE id=100". В строке, обозначенной знаком "+", выполняется данный SQL-запрос. Так вот, мне надо, если данный запрос невозможно выполнить (отсутствует строка с данным условием), то выдавало какое-нибудь предупреждение или ошибку.
Возможно такое реализовать?
  • 0

#2
forspamonly

forspamonly
  • Гость
  • 34 сообщений
почему невозможно выполнить? возможно. только не удалится ничего, потому как нечего удалять. ругаться/падать по причине отсутствия удаляемой записи не должно.

если хочется, можно потом посмотреть сколько удалилось. если мне не изменяет склероз (давно это было), в адо это делается через задницу - там у объекта коннекта к базе есть события, их можно ловить, и количество затронутых запросом строк приходит с событием завершения выполнения запроса. редкостный идиотизм, на мой взгляд.

другой вопрос, кому и зачем нужно на дотнетовском цешарпе юзать допотопные активыксовские адо? в адонете все гораздо проще, там у команды метод выполнения невыбирающего запроса сразу возвращает количество задетых строк.
  • 0

#3
batyrLAN

batyrLAN
  • В доску свой
  • 1 722 сообщений
Откуда мне стоит начать изучать ваш совет?
  • 0

#4
MMM

MMM
  • Постоялец
  • 322 сообщений
сначала нужно научиться искать по интернету
самый лучший советчик в области микрософта это MSDN
например здесь про адо.нет http://msdn.microsof...y/e80y5yhx.aspx
а насчет удаления вариантов много
1. лучше использовать хранимую процедуру
2. можешь перед удалением проверить существование этой строчки (с помощью count или if exists)
3. можешь использовать @@ROWCOUNT
4. можешь поизвращаться тригерами на удаление
вопщем вариантов много
  • 0

#5
forspamonly

forspamonly
  • Гость
  • 34 сообщений
изучать мой совет стоит последовательно. сначала первый абзац, потом второй, потом третий. :-]
  • 0

#6
idaa

idaa
  • Частый гость
  • 60 сообщений

Откуда мне стоит начать изучать ваш совет?

изучать надо не советы. а доки
http://msdn.microsof...023(VS.85).aspx
в частности назначение RecordsAffected
  • 0

#7
vrdev

vrdev
  • Гость
  • 11 сообщений
Если ты работаешь с MSSQL можно так:

try
{
conn.Execute("SET SHOWPLAN_TEXT ON");
conn.Execute("DELETE FROM test WHERE id=100");
}
finally
{
conn.Execute("SET SHOWPLAN_TEXT OFF");
}

В этом случае SQL Server вместо выполнения команды DELETE будет возвращать план выполнения запроса. И если в тексте запросе есть ошибки, сгенерит исключение.
  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.