Ich habe diese DataTable Ich möchte Daten einfügen, aber ich bekomme einen Fehler jedes Mal, wenn ich diesen Code ausführen.Einfügen von Daten in MySQLTable mit Hilfe von Params
„Unbekannter Datentyp“
Ich habe eine Funktion auf einem Modul, das (so habe ich es nicht neu schreiben, und ich kann es von jeder Form nennen), um die MySQL-Verbindung zu öffnen.
Imports MySql.Data.MySqlClient
Imports System.Net.Mail
Module Module1
Public MyConnection As New MySqlConnection
Public lastLogon As String = Today.Day & "/" & Today.Month & "/" & Today.Year & TimeOfDay.Hour & ":" & TimeOfDay.Minute & ":" & TimeOfDay.Second
Function ServerConnection()
Try
MyConnection.ConnectionString = "server=127.0.0.1;user=root;password=password;database=titulo"
MyConnection.Open()
Return True
Catch ex As Exception
Return False
End Function
'Don't mind this
+ Function SendMail(SendTo As String, subject As String, message As String)
End Function
End Module
So nenne ich dies die Serverconnection-Funktion und speichern Sie die Verbindung zu einem öffentlichen var genannt MyConnection verwenden, die ich von jeder anderen Form nennen kann.
Die Sache ist, habe ich diesen Code ein Konto zu erstellen, die Daten in eine Tabelle einfügt: (tut mir Leid der spanischen einfach den Code überprüfen und die Sendmail-Funktion nichts dagegen.)
Private Sub btnDo_Click(sender As Object, e As EventArgs) Handles btnDo.Click
If txtUsername.Text <> "" And txtPassword.Text <> "" And txtPassword2.Text <> "" And txtEmail.Text <> "" Then
If mailUsed = False Then
If userUsed = False Then
If txtPassword.Text <> txtPassword2.Text Then
lblError.Text = "Revise sus contraseñas."
Else
lblError.Text = ""
Try
ServerConnection()
Dim MyCommand As New MySqlCommand("INSERT INTO titulo.accounts(id, accountName, accountPassword, accountMail, accountLogon) VALUES(0, @username, @password, @email, @logon)", MyConnection)
MyCommand.Parameters.Add("@username", SqlDbType.VarChar, 10).Value = txtUsername.Text
MyCommand.Parameters.Add("@password", SqlDbType.VarChar, 16).Value = txtPassword.Text
MyCommand.Parameters.Add("@email", SqlDbType.VarChar, 60).Value = txtEmail.Text
MyCommand.Parameters.Add("@logon", SqlDbType.VarChar, 22).Value = "First Session."
MyCommand.ExecuteNonQuery()
Try
SendMail(txtEmail.Text, "Nueva cuenta en TITULO", txtUsername.Text & Environment.NewLine & " Se ha creado una cuenta a su nombre en " & My.Application.Info.AssemblyName & Environment.NewLine & "Nombre de cuenta: " & txtUsername.Text & Environment.NewLine & "Contraseña: " & txtPassword.Text)
Catch ex As Exception
MsgBox(ex.Message)
Finally
MsgBox("Cuenta creada. Correo enviado a: " & txtEmail.Text & ".")
End Try
Catch ex As Exception
MessageBox.Show("Error en la base de datos." & Environment.NewLine & ex.Message)
Finally
MyConnection.Close()
End Try
MsgBox("La cuenta " & txtUsername.Text & " ha sido creada." & Environment.NewLine & "Revise su correo " & txtEmail.Text & " para revisar sus datos.")
End If
Else
lblError.Text = "Ya existe una cuenta con ese nombre."
End If
Else
lblError.Text = "Ese correo ya esta en uso."
End If
Else
lblError.Text = "Revise sus datos."
End If
End Sub
Noch einmal, sorry über das Spanisch. Meine Konten Tabelle auf der titulo Datenbank sind folgende Datentypen id
INT NOT NULL AUTO_INCREMENT,
accountName
VARCHAR (10) NOT NULL,
accountPassword
VARCHAR (16) NOT NULL,
accountMail
VARCHAR (60) NOT NULL,
accountLogon
VARCHAR (22) NOT NULL,
Ich werde jede Hilfe zu schätzen wissen, wenn sie zur Verfügung gestellt wird.
Vielen Dank für die Korrektur. Ich werde sicher sein, es zu versuchen, und mir ist das Passwort-Sicherheitsproblem bekannt, aber ich habe es noch nicht gesehen. Vielen Dank für die Antwort! – Reviyee
In dem Fall, ich hasse mein Passwort, das in MySQL auf einem varchar (16) gespeichert ist, wenn das Ergebnis der Hash-Ausgaben, sagen wir, ein 30-stelliges Passwort, muss ich die Kapazität in der Passwort-Spalte erweitern, nicht wahr? – Reviyee
Wenn ich nicht falsch liege, wird die Länge des resultierenden Hashes entsprechend dem verwendeten Algorithmus festgelegt. MD5 erzeugt einen 16-Byte-Hash, SHA1 geht für 20 Byte, SHA-256 gibt 32 zurück. Aber MD5 und SHA1 sind dafür bekannt, dass sie zerbrechlich sind. Gehen Sie also zu dem sichereren SHA-256/512 und vergrößern Sie Ihre Spalte. (Beachten Sie, dass wenn Sie den Hash in hexadezimale Zeichenfolge konvertieren dann wahrscheinlich müssen Sie diese Größen verdoppeln) – Steve