C# - Einfügen von Daten aus einem Formular in eine access-Datenbank
Ich begann das lernen über C#
geworden und klebte mit dem einfügen von Informationen aus Textboxen in eine Access
Datenbank, wenn eine klicken Sie auf die Schaltfläche verwendet wird.
Das problem, das ich bekomme, ist während der Zugabe Prozess. Der code führt die Try... Catch
Teil und gibt dann die Fehlermeldung "Microsoft Access Database Engine" und gibt keine Hinweise.
Hier ist der code:
namespace WindowsFormsApplication1
{
public partial class FormNewUser : Form
{
public FormNewUser()
{
InitializeComponent();
}
private void BTNSave_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\kenny\Documents\Visual Studio 2010\Projects\Copy Cegees\Cegees\Cegees\Login.accdb";
String Username = TEXTNewUser.Text;
String Password = TEXTNewPass.Text;
OleDbCommand cmd = new OleDbCommand("INSERT into Login (Username, Password) Values(@Username, @Password)");
cmd.Connection = conn;
conn.Open();
if (conn.State == ConnectionState.Open)
{
cmd.Parameters.Add("@Username", OleDbType.VarChar).Value = Username;
cmd.Parameters.Add("@Password", OleDbType.VarChar).Value = Password;
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Data Added");
conn.Close();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Source);
conn.Close();
}
}
else
{
MessageBox.Show("Connection Failed");
}
}
}
}
- Versuchen Sie, MessageBox.Show(ex.Message); und Sie werden wahrscheinlich erhalten eine verständliche Meldung
- Sie müssen einige
using
- Anweisungen für dieOleDbConnection
undOleDbCommand
. Sind Sie Salzen und Hashen des Passworts? - mit diesen mate verwenden von System; verwenden von System.Sammlungen.Generic; using System.Daten.OleDb; using System.ComponentModel; using System.Data; verwenden von System.Drawing; using System.Linq; Verwendung System.Text; using System.Windows.Formen;
- und bewegen conn.Schließen (), um schließlich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Password
ist ein reserviertes Wort. Klammer, Feld-Namen, um eine Verwechslung der db-engine.Diese Antwort helfen wird, im Fall, Wenn Sie mit Datenbanken dann meist nehmen Sie die Hilfe von try-catch-block-Anweisung, die Ihnen helfen und begleiten Sie mit Ihrem code. Hier zeige ich Euch, wie legen Sie einige Werte in der Datenbank mit einem Button-Click-Ereignis.
Ja, es funktioniert, leider ist Ihr code ist, ignorieren Sie alle diese Hinweise. Werfen Sie einen Blick auf Ihre exception-handler:
Alle du bist der Prüfung ist die Quelle die Ausnahme. Die, in diesem Fall "Microsoft Access Database Engine". Du bist nicht der Prüfung der Fehlermeldung selbst, oder der stack-trace, oder jede innere Ausnahme, oder etwas nützliches über die Ausnahme.
Ignorieren Sie nicht die Ausnahme, es enthält Informationen darüber, was schief gelaufen ist und warum.
Gibt es verschiedene logging-tools gibt (NLog, log4net, etc.) die Ihnen helfen können, melden Sie nützliche Informationen über eine Ausnahme. Gelingt das nicht, sollten Sie mindestens capture the exception stack trace, und einer inneren Ausnahme(N). Derzeit sind Sie ignorieren die Fehler, die ist, warum bist du nicht in der Lage, den Fehler zu lösen.
In Ihrem debugger, einen Haltepunkt innerhalb des
catch
block und prüfen Sie die details der Ausnahme. Finden Sie, dass es enthält eine Menge Informationen.MessageBox.Show(ex.ToString());
die ziemlich drucken Sie den Fehler.