У меня есть быстрый вопрос о VBNET, в настоящее время я использую VS 2012 Express и Microsoft Access в качестве моей базы данных.Хранить все запросы внутри модуля?
Вопрос в том, как разместить свои запросы в модуле вместо того, чтобы поместить запросы в форму? Скажем, у меня есть эта функция в frmStock:
frmStock:
Public Sub FillCategory(ByVal Key As String, ByVal Txt As String, ByVal N As TreeNode)
Dim TD As TreeNode
If N Is Nothing Then
TD = tvCategory.Nodes.Add(Key, Txt)
Else
TD = N.Nodes.Add(Key, Txt)
End If
Dim cmd As New OleDbCommand("SELECT * FROM Category WHERE Category_Parent = ?", conn)
cmd.Parameters.AddWithValue("Category_Parent", Key)
Dim dr = cmd.ExecuteReader
Do While dr.Read()
FillCategory(dr("Category_ID"), dr("Category_Name"), TD)
Loop
dr.Close()
cmd.Dispose()
End Sub
Я хочу, чтобы переместить
Dim cmd As New OleDbCommand("SELECT * FROM Category WHERE Category_Parent = ?", conn)
в модуль вместо этого.
Я попытался сделать:
Module queryCollection
Public getCategoryParent As New OleDbCommand(_
"SELECT * FROM Category WHERE Category_Parent = ?", conn)
End Module
И доработанную мою функцию FillCategory к:
Public Sub FillCategory(ByVal Key As String, ByVal Txt As String, ByVal N As TreeNode)
Dim TD As TreeNode
If N Is Nothing Then
TD = tvCategory.Nodes.Add(Key, Txt)
Else
TD = N.Nodes.Add(Key, Txt)
End If
getCategoryParent.Parameters.AddWithValue("Category_Parent", Key)
Dim dr = getCategoryParent.ExecuteReader
Do While dr.Read()
FillCategory(dr("Category_ID"), dr("Category_Name"), TD)
Loop
dr.Close()
getCategoryParent.Dispose()
End Sub
UPDATE:
Некоторые Снимок экрана для моей проблемы:
Моя база данных: http://puu.sh/39CMV.PNG
, прежде чем перейти мой запрос в модуль: http://puu.sh/39D0M.PNG
Перебравшись мой запрос в модуль: puu.sh/39CVV.PNG
Казалось, как выполнить только один раз Почему это и что (?) является правильным способом объявления моих запросов в модуле?
У меня на самом деле есть тонны запросов, я хочу хранить их в одном месте для более упорядоченного кодирования.
вам действительно нужно хранить запросы делать? Не можете ли вы использовать что-то вроде LINQ to SQL или LINQ to EF? Было бы намного лучше, чем иметь строковые литералы в вашем коде. –
@DoctorJones, привет спасибо за ваш ответ, я еще не встречал LINQ, и я использую Microsoft Access в качестве моей базы данных. Я хочу хранить все свои запросы в модуле, в основном потому, что в моем кодировании слишком много запросов, оно выглядит таким грязным, мне нужно его организовать. –
Я бы очень хотел посмотреть LINQ to SQL. Он исключает все строковые литералы в вашем коде и вместо этого заменяет их строго типизированными запросами. Это означает, что вы будете ловить орфографические ошибки и т. Д. Во время компиляции, а не во время выполнения, и упростит ваш код. –