powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Хранение запросов
16 сообщений из 41, страница 2 из 2
Хранение запросов
    #39554803
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkИзопропилпропущено...

это не всегда приемлемоПочему?
ТС вроде показывает зппросы в ГУИ.
Но это гадание на гуще.
...
Рейтинг: 0 / 0
Хранение запросов
    #39554851
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkИзопропилпропущено...

это не всегда приемлемоПочему?

Вариантов много,

Например, нет прав на создание процедур
Или один набор запросов применяется к разным базам и т д
...
Рейтинг: 0 / 0
Хранение запросов
    #39555013
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть много вариантов, T4 (Runtime Text Templates), Если запрос не генерируется динамически можно хранить в любом удобном виде, в файле, ресурсе, константе, какая разница то?
лично я для генерации сложных динамических запросов использую простой StringBuilder и не парюсь, всё это занимает миллисекунды и если нет задачи выполнения в высоконагруженной среде, типа надо выполнять 100500 запросов в секунду, то вся эта "оптимизация" не имеет смысла
...
Рейтинг: 0 / 0
Хранение запросов
    #39555783
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttХраните запросы в БД тогда
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public Class Form1
    'Текст запроса с параметрами
    Dim GeneralStringCommand As String

    Private Sub GeneralForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Connector = New OleDbConnection
        Connector.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\iivanov\Desktop\Базы данных\Access\Для калькулятора.accdb;Persist Security Info=False;"
        Connector.Open()

        Dim Command2 As New OleDbCommand("SELECT ИмяЗапроса, ТекстЗапроса FROM Запросы", Connector)
        Dim dr2 As OleDbDataReader = Command2.ExecuteReader
        'Вытаскиваем запрос с параметром
        Try
            While dr2.Read()
                If dr2.Item("ИмяЗапроса") = "SQLQuery2" Then
                    GeneralStringCommand = dr2.Item("ТекстЗапроса")
                    Exit While
                End If
            End While
            dr2.Close()
        Catch ex As Exception
            If dr2.IsClosed = False Then
                dr2.Close()
            End If
        End Try      
    End Sub

End Class


Оцените код, который вытаскивает запрос из базы по имени. Возможно ли как то оптимальнее вытащить?
...
Рейтинг: 0 / 0
Хранение запросов
    #39555786
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Хранение запросов
    #39555815
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ferzmikkОцените код, который вытаскивает запрос из базы по имени. Возможно ли как то оптимальнее вытащить?
Дрянь код.

Зачем считывать все запросы, если нужен один, имя которого известно?
...
Рейтинг: 0 / 0
Хранение запросов
    #39555825
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так надо было получается
Код: vbnet
1.
Dim Command2 As New OleDbCommand("SELECT ТекстЗапроса FROM Запросы WHERE ИмяЗапроса = 'SQLQuery2", Connector)


Потом из Command2 как вытащить сам текст запроса, если возвращает одно значение (как одна строка и один столбец)?
...
Рейтинг: 0 / 0
Хранение запросов
    #39555911
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkОцените код, который вытаскивает запрос из базы по имени. Возможно ли как то оптимальнее вытащить?
Создайте тему: Как из базы получать значения.
Причём тут запросы?
...
Рейтинг: 0 / 0
Хранение запросов
    #39556026
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
логику работы с базой данных нужно исключить из класса формы, ему там не место.
создайте класс который будет отвечать за взаимодействие с базой данных и работайте через него.
писать запросики в форме, это очень плохая практика, когда через лет пару лет надо будет найти, где там и что вызывается замучаетесь искать и править. + когда архитектура приложения станет чуть более сложнее, чем 1 проект, начнутся проблемы циклическими ссылками на сборки.
Если нужно получить не recordset, а 1 значение, лучше использовать метод ExecuteScalar, он вернет значение, а не DataReader.
...
Рейтинг: 0 / 0
Хранение запросов
    #39556044
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Roman Mejtesсоздайте класс который будет отвечать за взаимодействие с базой данных
Это типизированный DataSet
...
Рейтинг: 0 / 0
Хранение запросов
    #39556054
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Roman Mejtesсоздайте класс который будет отвечать за взаимодействие с базой данных
Это типизированный DataSet
Ну в модуле есть отдельная процедура для обновления DataGridView
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Public Sub RefreshGrig(ByVal Grid As DataGridView, ByVal cmd As String, ByVal TableName As String)
        Dim Command As New OleDbCommand
        Command.Connection = Connector
        Command.CommandText = cmd

        Dim DataSet As New DataSet
        Dim DataAdapter As New OleDbDataAdapter(Command)
        DataAdapter.Fill(DataSet, TableName)
        Grid.DataSource = DataSet
        Grid.DataMember = TableName
    End Sub

...
Рейтинг: 0 / 0
Хранение запросов
    #39556057
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ferzmikkCat2пропущено...

Это типизированный DataSet
Ну в модуле есть отдельная процедура для обновления DataGridView
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Public Sub RefreshGrig(ByVal Grid As DataGridView, ByVal cmd As String, ByVal TableName As String)
        Dim Command As New OleDbCommand
        Command.Connection = Connector
        Command.CommandText = cmd

        Dim DataSet As New DataSet
        Dim DataAdapter As New OleDbDataAdapter(Command)
        DataAdapter.Fill(DataSet, TableName)
        Grid.DataSource = DataSet
        Grid.DataMember = TableName
    End Sub



И отдельная для удаления, отдельная для редактирования?
...
Рейтинг: 0 / 0
Хранение запросов
    #39556097
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2И отдельная для удаления, отдельная для редактирования?Также все на форме для каждой кнопки
Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Insert INTO ..."
Command.ExecuteNonQuery()


Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Update ... Where Код =" & k
Command.ExecuteNonQuery()


Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Delete FROM ... WHERE Код =" & k
Command.ExecuteNonQuery()
...
Рейтинг: 0 / 0
Хранение запросов
    #39556413
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ferzmikkCat2И отдельная для удаления, отдельная для редактирования?Также все на форме для каждой кнопки
Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Insert INTO ..."
Command.ExecuteNonQuery()



Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Update ... Where Код =" & k
Command.ExecuteNonQuery()



Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Delete FROM ... WHERE Код =" & k
Command.ExecuteNonQuery()


Жуть.

И это в то время, когда все это делается одной строкой-

Код: c#
1.
myTableAdapter.Update(myTable)
...
Рейтинг: 0 / 0
Хранение запросов
    #39556414
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2ferzmikkпропущено...
Также все на форме для каждой кнопки
Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Insert INTO ..."
Command.ExecuteNonQuery()



Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Update ... Where Код =" & k
Command.ExecuteNonQuery()



Код: vbnet
1.
2.
3.
4.
Dim Command As New OleDbCommand
Command.Connection = Connector
Command.CommandText = "Delete FROM ... WHERE Код =" & k
Command.ExecuteNonQuery()


Жуть.

И это в то время, когда все это делается одной строкой-

Код: c#
1.
myTableAdapter.Update(myTable)



ну, не совсем одной, для адаптера нужны команды
...
Рейтинг: 0 / 0
Хранение запросов
    #39556423
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ролг Хупинну, не совсем одной, для адаптера нужны команды
Выше писалось, что для взаимодействия с базой лучше всего сделать специальный класс. Согласен. Микрософт позаботилась об этом, сделав типизированный DataSet.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Хранение запросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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