Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос с параметром........!!! / 19 сообщений из 19, страница 1 из 1
30.11.2009, 11:43
    #36338487
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Чета не пойму где грабли!!! База в Firebird 2.0.

автор

Private Sub knopka_Udalit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles knopka_Udalit.Click

Dim ТекстЗапроса

ТекстЗапроса = "DELETE FROM spr_PS WHERE KOD=@Param"

Delete_Stroka_DataGrid(DataGridView_sprSDDS, DataGridView_sprSDDS.CurrentCell.RowIndex, ТекстЗапроса)

End Sub
Sub Delete_Stroka_DataGrid(ByVal ДатаГрид, ByVal ТекущаяСтрока, ByVal ТекстЗапроса)

Dim ЗапросВыполнить

ЗапросВыполнить = New OleDb.OleDbCommand(ТекстЗапроса, Подключение)
ЗапросВыполнить.Parameters.AddWithValue("@Param", ТекущаяСтрока + 1)
ЗапросВыполнить.ExecuteNonQuery()

End Sub
...
Рейтинг: 0 / 0
30.11.2009, 11:46
    #36338496
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
peb,

Поле KOD типа счетчик
...
Рейтинг: 0 / 0
30.11.2009, 11:48
    #36338503
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
peb,

А без параметра запрос работает нормально!!!
...
Рейтинг: 0 / 0
30.11.2009, 11:56
    #36338524
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
> Автор: peb
> А без параметра запрос работает нормально!!!

И что, даже ошибку не скажешь?

З.Ы. Вообще в самом FB неименованные параметры обозначаются символом ?(знак вопроса), а именованные - перед именем
ставится двоеточие :Param
З.Ы.Ы. Я не знаю как насчет НЕТ, а в предыдущих версиях технологий доступа к данным, параметризированные запросы нужно
было рефрешить, или явно указывать тип и направленность параметра

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
30.11.2009, 12:04
    #36338552
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Игорь Горбонос извиняюсь поторопился!!!


Ошибка подготовки SQL выражения. Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 30 @
...
Рейтинг: 0 / 0
30.11.2009, 13:10
    #36338745
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Спасибо!
...
Рейтинг: 0 / 0
30.11.2009, 13:37
    #36338833
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Изменил код

автор

ТекстЗапроса = "DELETE FROM spr_PS WHERE KOD=:Param"

ЗапросВыполнить = New OleDb.OleDbCommand(ТекстЗапроса, Подключение)
ЗапросВыполнить.Parameters.AddWithValue(":Param", ТекущаяСтрока + 1)
ЗапросВыполнить.ExecuteNonQuery()



Теперь выполняется без ошибок, но записи в базе не удаляются!!!
...
Рейтинг: 0 / 0
30.11.2009, 13:55
    #36338887
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
(ТекущаяСтрока + 1) и чему равно это значение? такой код присутствует в вашей таблице?
...
Рейтинг: 0 / 0
30.11.2009, 14:06
    #36338915
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Konst_One(ТекущаяСтрока + 1) и чему равно это значение? такой код присутствует в вашей таблице?

значение=integer
...
Рейтинг: 0 / 0
30.11.2009, 14:08
    #36338929
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Код: plaintext
DELETE FROM spr_PS WHERE KOD=?

так чему равно ваше значение типа integer
как узнаете, попробьуйте для начала написать :

Код: plaintext
select * from  spr_PS WHERE KOD=?

может с таким кодом и записей то нет у вас в таблице
...
Рейтинг: 0 / 0
30.11.2009, 14:10
    #36338937
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Konst_One
Код: plaintext
DELETE FROM spr_PS WHERE KOD=?

так чему равно ваше значение типа integer
как узнаете, попробьуйте для начала написать :

Код: plaintext
select * from  spr_PS WHERE KOD=?

может с таким кодом и записей то нет у вас в таблице

Значение = 2
...
Рейтинг: 0 / 0
30.11.2009, 14:11
    #36338942
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
и...
записи то с этим кодом в таблице присутствуют?
...
Рейтинг: 0 / 0
30.11.2009, 14:16
    #36338966
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Konst_Oneи...
записи то с этим кодом в таблице присутствуют?

Да такая запись есть, но при добавлении * в запрос - ошибка "Ошибка подготовки SQL выражения. Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 8 *"
...
Рейтинг: 0 / 0
30.11.2009, 14:17
    #36338969
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
> Автор: peb
> Теперь выполняется без ошибок, но записи в базе не удаляются!!!

FB подразумевает явное управление транзакциями. После запроса нужно сделать Commit транзакции в контексте которой
выполнялся запрос. И обновить данные для показа.
Или в зависимости от установок транзакций, другие могут видеть незакомиченные результаты выполнения запроса. Но
рефрешить читающие датасеты нужно в любом случае.

З.Ы. Обычная практика использовать длинные читающие транзакции и короткие для изменения данных.
Почитай

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
30.11.2009, 14:25
    #36338991
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Игорь Горбонос
> Автор: peb
> Теперь выполняется без ошибок, но записи в базе не удаляются!!!

FB подразумевает явное управление транзакциями. После запроса нужно сделать Commit транзакции в контексте которой
выполнялся запрос. И обновить данные для показа.
Или в зависимости от установок транзакций, другие могут видеть незакомиченные результаты выполнения запроса. Но
рефрешить читающие датасеты нужно в любом случае.

З.Ы. Обычная практика использовать длинные читающие транзакции и короткие для изменения данных.
Почитай



Спасибо за статью!!!
Но если запрос написать так: "DELETE FROM spr_PS", то таблица очищается полностью без использования транзакций!!!
...
Рейтинг: 0 / 0
30.11.2009, 14:33
    #36339016
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
pebKonst_Oneи...
записи то с этим кодом в таблице присутствуют?

Да такая запись есть, но при добавлении * в запрос - ошибка "Ошибка подготовки SQL выражения. Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 8 *"

простите, но вы что-то делаете не то. какую звездочку вы добавляли и куда и зачем?

Код: plaintext
DELETE FROM spr_PS WHERE KOD= 2 

у вас отрабатывает? если да, то разбирайтесь с вашим кодом выполнения через команду с параметром.

вот так выполните:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub CreateOleDbCommand( _
    ByVal queryString As String, ByVal connectionString As String)
    Using connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim command As New OleDbCommand(queryString, connection)
        command.ExecuteNonQuery()
    End Using
End Sub

CreateOleDbCommand("DELETE FROM spr_PS WHERE KOD=2","здесь ваша строка соединения с базой")
...
Рейтинг: 0 / 0
30.11.2009, 14:37
    #36339027
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
и вообще почитайте статейку в MSDN: Configuring Parameters and Parameter Data Types (ADO.NET)

ms-help://MS.MSDNQTR.v90.en/wd_adonet/html/537d8a2c-d40b-4000-83eb-bc1fcc93f707.htm
...
Рейтинг: 0 / 0
30.11.2009, 14:39
    #36339034
peb
peb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
Konst_One извиняюсь не то написал.....
...
Рейтинг: 0 / 0
30.11.2009, 17:05
    #36339481
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с параметром........!!!
> Автор: peb
> Но если запрос написать так: "DELETE FROM spr_PS", то таблица очищается полностью без использования транзакций!!!

Все действия в SQL-серверах происходят в контексте транзакций, другое дело что в случае с блокировочниками, типа MS SQL
Server управление транзакциями скрыто от пользователя, но если нужно можно и явно управлять. В SQL серверах -
версионниках, типа FB - управление транзакциями это основа производительности. Поэтому и управление транзакциями нужно
вытаскивать на свет божий

З.Ы. Пол-дня на сообщение,

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос с параметром........!!! / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]