Простой оператор INSERT для SQL принимает следующую базовую форму:
INSERT INTO [tablename] ( [column1], [column2], ... ) VALUES ( [value1], [value2], ...)
Итак, нам, очевидно, нужно знать о таблице базы данных, которую вы используете: какие у нее столбцы. Нам также нужно знать о классе: какими свойствами он обладает. Наконец, нам нужно знать о типах данных для столбцов таблицы и свойств класса, а также о том, как свойства будут сопоставляться со столбцами. Для очень простых объектов имена и типы будут просто совпадать. Но в других случаях ваш класс может сам содержать коллекцию (или несколько), которая будет означать вставку данных в более чем одну таблицу.
После того, как все это определено, нам все еще нужны две вещи: информация о соединении для базы данных (обычно сводится в одну строку соединения ) и то, обеспокоены ли вы тем, что ваш экземпляр класса мог быть сохраненные ранее, и в этом случае вы хотите создать оператор UPDATE, а не INSERT.
Предполагая, что вы можете ответить на все это удовлетворительным образом, ваш код VB.Net будет выглядеть примерно так (конечно, при необходимости подставляя ваш конкретный столбец, свойство, тип и информацию о соединении):
Public Class Customer
Public Sub Save()
DAL.SaveCustomer(Me)
End Sub
' ...'
End Class
.
' a VB Module is a C# static class'
Public Module DAL
Private ConnString As String = "Your connection string here"
Public Sub SaveCustomer(ByVal TheCustomer As Customer)
Dim sql As String = "" & _
"INSERT INTO [MyTable] (" & _
"[column1], [column2], ..." & _
") VALUES (" & _
"@Column1, @Column2, ... )"
Using cn As New SqlConnection(ConnString), _
cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@column1", SqlDbTypes.VarChar, 50).Value = TheCustomer.Property1
cmd.Parameters.Add("@column2", SqlDbTypes.VarChar, 1000).Value = TheCustomer.Property2
cn.Open()
cmd.ExecuteNonQuery()
End Using
End Sub
End Module
Я знаю, что вы уже слышали, что выделение кода вашей базы данных - это "правильная вещь", но я подумал, что вам также могут понадобиться более конкретные причины, почему вы хотели бы структурировать свой код таким образом:
- Строка подключения хранится в одном месте, поэтому, если ваш сервер баз данных перемещается, вам нужно только сделать одно изменение. Еще лучше, если это собственная сборка или файл конфигурации.
- Если вы когда-либо переходите на совершенно другой тип базы данных, вам нужно всего лишь изменить один файл, чтобы обновить программу.
- Если у вас есть один разработчик или администратор базы данных, который особенно хорош в SQL, вы можете позволить ему выполнять большую часть обслуживания в этой части приложения.
- Это делает код для ваших "реальных" объектов проще и, следовательно, его легче обнаружить, когда вы совершаете логическую ошибку проектирования.
- Код DAL может в конечном итоге использоваться повторно, если другое приложение хочет установить связь с той же базой данных.
- Если вы используете инструмент ORM, большая часть кода DAL написана для вас.