SQL Hazır Bildirimi İşlevi için kullanıyorum bir sınıf yaptım. Sınıf I, sonra SQL veritabanına veri ekleme için başka işleve değişkenleri geçmek için bu kodu kullanmak parametresiniVB.Net Sınıf/Yöntem iyileştirme
Public Function MakeMyParameter(ByVal strName As String, ByVal intLength As Integer, ByVal objValue As Object) As _SQLParameter
Dim param As New _SQLParameter
param.Name = strName
param.Length = intLength
param.Value = objValue
Return param
End Function
oluşturmak için bu kodu var
Public Class _SQLParameter
Public Name As String
Public Length As Int16
Public Value As Object
End Class
olduğunu.
Dim MyDatabaseName as "MyDatabase"
Dim MyTableName as "Password"
Dim MyVariableList As New List(Of _SQLParameter)
MyVariableList.Add(MakeMyParameter("Password",0,varbytePassword))
MyVariableList.Add(MakeMyParameter("DateTimeChanged",0,DateTime.Now()))
_SQLPreparedInsertStatement(MyDatabaseName, MyTableName, MyVariableList)
Benim işlevi daha sonra veritabanı adını, masa adı ve NonQuery hazırlanmış deyimi oluşturmak ve yürütmek geçirilen liste değişkeni kullanır. Bu iyi çalışıyor.
Tüm kod çalışır ancak kodumu nasıl geliştireceğimi bilmek istiyorum çünkü bana göre korkunç görünüyor. .NET konusunda uzman değilim, ancak almak için yeterince yapabilirim. Bana nasıl geliştirileceği konusunda bazı önerilerde bulunursanız harika olur.
Teşekkür
Düzenleme ....
Ben Hazırlanan Beyanı oluşturmak ve çalıştırmak için bu alt rutini kullanın. Bunu yaptım, böylece sahip olduğum herhangi bir INSERT bildirimi için yeniden kullanabilirim.
Public Sub _SQLPreparedInsertStatement(ByVal _SQLDatabaseName As String, ByVal _SQLTableName As String, _SQLParameters As List(Of _SQLParameter))
Dim _ColumnNames As String = ""
Dim _Parameters As String = ""
Dim _SQLInsertCommand As New SqlCommand()
_SQLInsertCommand.CommandType = CommandType.Text
Try
Using _SQLConnection As New SqlConnection(_varstrSQLLocalDBConnectionString)
Try
_SQLConnection.Open()
_SQLInsertCommand.Connection = _SQLConnection
Catch ex As Exception
MessageBox.Show("Error - " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
For Each param As _SQLParameter In _SQLParameters
_ColumnNames = _ColumnNames & param.Name & ","
_Parameters = _Parameters & "@" & param.Name & ","
If TypeOf param.Value Is Byte() Then
_SQLInsertCommand.Parameters.Add("@" & param.Name, SqlDbType.VarBinary, param.Length).Value = param.Value
ElseIf TypeOf param.Value Is String Then
_SQLInsertCommand.Parameters.Add("@" & param.Name, SqlDbType.VarChar, param.Length).Value = param.Value
ElseIf TypeOf param.Value Is Integer Then
_SQLInsertCommand.Parameters.Add("@" & param.Name, SqlDbType.Int, param.Length).Value = param.Value
ElseIf TypeOf param.Value Is DateTime Then
_SQLInsertCommand.Parameters.Add("@" & param.Name, SqlDbType.DateTime, 0).Value = param.Value
End If
Next
'remove comma from the end of the variables
_ColumnNames = _ColumnNames.TrimEnd(",")
_Parameters = _Parameters.TrimEnd(",")
Try
_SQLInsertCommand.CommandText = "USE " & _SQLDatabaseName & "; INSERT INTO " & _SQLTableName & " (" & _ColumnNames & ") VALUES (" & _Parameters & ")"
_SQLInsertCommand.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("An error has occurred executing a SQL command - " & ex.Message & Environment.NewLine & "Query - " & _SQLInsertCommand.CommandText, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Using
Catch ex As Exception
MessageBox.Show("Some Error. Most unexpected")
End Try
End Sub
Sanırım bu gerçekten açık değil * neden * bu kodun ilk olarak var, çünkü .NET zaten bu işlevselliği sağlıyor. – David
Kullanılabilir aşırı yüklenmelerden bazılarını kullanırsanız, bir yardımcı sınıfı olmadan doğrudan bir parametre oluşturabilir ve ekleyebilirsiniz: 'cmd.Parameters.Add (param, dbType, boyut) .Value = typedValue'. "Yardımcı" sınıfı, bunu doğrudan yapmaktan daha çok iş yapar. – Plutonix
'Bu kod ... Veri Ekle 'Tek tablolarda DataAdapter öğesini, INSERT, SELECT, DELETE ve UPDATE komutlarını ve temel sorun olan' Update's temelli '' hatırla '' olarak yapılandırabilirsiniz. Tamamen yapılandırılmış bir DA diğer birçok avantaj ve özelliklere de sahiptir. – Plutonix