使用存储库,新窗口和主窗口在C#中更新

时间:2016-12-16 10:05:14

标签: c# ms-access

这是我用于在c#中更新客户的代码,有人可以帮我修改代码,以便它能顺利运行吗?

这是我的存储库代码:

public static void KlantWijzigen(Klant klan)
{
    string commandString = string.Format("UPDATE tblKlanten (Adres, Postcode, Gemeente, Email, Telefoonnummer) SET('{0}','{1}','{2}','{3}','{4}')", klan.Adres, klan.Postcode, klan.Gemeente, klan.Email, klan.Telefoonnummer);

    OleDbConnection conn = new OleDbConnection(connectionString);
    OleDbCommand command = new OleDbCommand();
    OleDbDataAdapter adapter = new OleDbDataAdapter();

    conn.Open();

    //commandstring toevoegen aan adapter
    command.Connection = conn;
    command.CommandText = commandString;
    adapter.UpdateCommand = command;

    //command uitvoeren
    adapter.UpdateCommand.ExecuteNonQuery();

    //databank connect
    conn.Close();
}

我的新窗口代码:

public partial class WindowKlantWijzig : Window
{
    public WindowKlantWijzig()
    {
        InitializeComponent();
    }

    private void buttonSlaOp_Click(object sender, RoutedEventArgs e)
    {
        Klant upda = new Klant();

        upda.Naam = textBoxNieuweNaam.Text;
        upda.Adres = textBoxAdresNieuw.Text;
        upda.Postcode = Convert.ToInt32(textBoxPostcodeNieuw.Text);
        upda.Gemeente = textBoxGemeenteNieuw.Text;
        upda.Email = textBoxEmailNieuw.Text;
        upda.Telefoonnummer = textBoxTelefoonnummerNieuw.Text;

        KlantRepository.KlantWijzigen(upda);
        MessageBox.Show("De klant werd succesvol gewijzigd");
    }
}

这是我的主窗口代码

private void buttonWijzigKlant_Click(object sender, RoutedEventArgs e)
{
    if (comboBoxKlanten.SelectedIndex == -1)
    {
        MessageBox.Show("Selecteer de klant die je wil wijzigen");
    }
    else
    {
        // TODO: gebruiker eerst om bevestiging vragen
        Klant klan = (Klant)comboBoxKlanten.SelectedItem;
        KlantRepository.KlantWijzigen(klan);
        MessageBox.Show("De klant werd succesvol gewijzigd");

        //combobox wordt vernieuwd
        comboBoxKlanten.ItemsSource = null;
        comboBoxKlanten.ItemsSource = KlantRepository.AlleKlanten();
    }
}

1 个答案:

答案 0 :(得分:0)

作为对评论问题的回答,我会这样做:(未经测试/伪) 所以这不是答案,而是一个防止的回应SQL-注射。

i

不要忘记......你错过了public static void KlantWijzigen(Klant klan) { string commandString = "UPDATE tblKlanten (Adres, Postcode, Gemeente, Email, Telefoonnummer) SET(@Adres, @Postcode, @Gemeente, @Email, @Telefoonnummer)"; using(OleDbConnection conn = new OleDbConnection(connectionString)) using(OleDbCommand command = new OleDbCommand()) { conn.Open(); //commandstring toevoegen aan adapter command.Connection = conn; command.CommandText = commandString; // de velden zetten via de parameters, zodat SQL-injection niet werkt. command.Parameters.Add("Adres", OleDbType.VarChar).Value = klan.Adres; command.Parameters.Add("Postcode", OleDbType.VarChar).Value = klan.Postcode; command.Parameters.Add("Gemeente", OleDbType.VarChar).Value = klan.Gemeente; command.Parameters.Add("Email", OleDbType.VarChar).Value = klan.Email; command.Parameters.Add("Telefoonnummer", OleDbType.VarChar).Value = klan.Telefoonnummer; OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.UpdateCommand = command; //command uitvoeren adapter.UpdateCommand.ExecuteNonQuery(); } } 条款..所以你要更新所有记录。

您可能会改变(类似):

Where