簡體   English   中英

c#使用參數將數據插入MySQL數據庫

[英]c# Insert data into MySQL database using parameters

這可能是一個簡單的解決方案,但是我有一個截止日期,我不知道確切的問題。 所以這是交易,我正在嘗試使用這段代碼來更新我的表:

    private void btn_opslaan_Click(object sender, EventArgs e)
    {
        string opleidingsid = "Select OpleidingsID From opleidingen Where Opleidingsnaam = '" + cb_opleiding.Text + "'";
        MySqlCommand cmdid = new MySqlCommand(opleidingsid, dbconnect.connection);
        dbconnect.OpenConnection();
        MySqlDataReader reader = cmdid.ExecuteReader();
        reader.Read();
            int oplid = (int)reader.GetValue(0);

        cmdid.Dispose();
        reader.Close();
        sql = "UPDATE leerlingen SET Naam = '_naam', Adres = '_adres', Woonplaats = '_woonplaats', Postcode = '_postcode', Email = '_email', Telefoonnummer = '_telefoonnummer', Klas = '_klas', Ovnummer = '_ovnummer', OpleidingsID = '_opleidingsid', Startdatum = '_startdatum', Einddatum = '_einddatum' WHERE LeerlingID = '_leerlingid'";

      //  sql = "UPDATE leerlingen set Naam  = '" + txt_naam.Text + "', Adres = '" + txt_adres.Text + "', Woonplaats = '" + txt_woonplaats.Text + "', Postcode = '" + txt_postcode.Text + "', Email = '" + txt_email.Text + "', Telefoonnummer = '" + txt_telefoonnumer.Text + "', Klas = '" + txt_klas.Text + "', Ovnummer = '" + txt_ovnummer.Text + "', OpleidingsID = '" + oplID + "', Startdatum = '"+mc_startdatum.SelectionStart.Date.ToString()+"', Einddatum = '"+ mc_einddatum.SelectionStart.Date.ToString() +"' WHERE LeerlingID = '" + Int32.Parse(lbl_leerlingid.Text) + "'";
        MySqlCommand cmd = new MySqlCommand(sql, dbconnect.connection);

        cmd.Parameters.AddWithValue("_naam", txt_naam.Text);
        cmd.Parameters.AddWithValue("_adres", txt_adres.Text);
        cmd.Parameters.AddWithValue("_woonplaats", txt_woonplaats.Text);
        cmd.Parameters.AddWithValue("_postcode", txt_postcode.Text);
        cmd.Parameters.AddWithValue("_email", txt_email.Text);
        cmd.Parameters.AddWithValue("_telefoonnummer", txt_telefoonnumer.Text);
        cmd.Parameters.AddWithValue("_klas", txt_klas.Text);
        cmd.Parameters.AddWithValue("_ovnummer", txt_ovnummer.Text);
        cmd.Parameters.AddWithValue("_opleidingsid", oplid);
        cmd.Parameters.AddWithValue("_startdatum", mc_startdatum.SelectionStart.Date.ToString());
        cmd.Parameters.AddWithValue("_einddatum", mc_einddatum.SelectionStart.Date.ToString());
        cmd.Parameters.AddWithValue("_leerlingid", int.Parse(lbl_leerlingid.Text));

        try
        {
            cmd.ExecuteNonQuery();
            MessageBox.Show("opslaan gelukt");
        }
        catch (Exception error)
        {
            MessageBox.Show(error.ToString());
            throw;
        }
        dbconnect.CloseConnection();

        this.Close();

    }

我已經嘗試過不使用單引號了,這會給我一個錯誤,即“ _leerlingid”列不存在,但這是參數...現在,我沒有收到任何錯誤,但是它不會更新我的數據庫。 任何幫助請

PS請先忽略sql注入,在此之前,在了解參數之前我並不了解。

嘗試用@符號替換參數,並刪除單引號,如下所示:

SQL = "UPDATE leerlingen SET Naam = @naam, Adres = @adres";

cmd.Parameters.AddWithValue("@naam", txt_naam.Text);
cmd.Parameters.AddWithValue("@adres", txt_adres.Text);

我認為您做錯了,您不能那樣初始化MySqlCommand。 一定是這樣

MySqlCommand cmd;

cmd = dbconnect.createCommand();
cmd.CommandText = "UPDATE tableName SET firstname=@firstname, lastname=@lastname where id=@id";
cmd.Parameters.AddWithValue("@id", idTxt.Text);
cmd.Parameters.AddWithValue("@firstname", fName.Text);
cmd.Parameters.AddWithValue("@lastname", lName.Text);
cmd.ExecuteNonQuery();

當我在C#中創建新數據時,我將其設置為..

//值

String a = "COL1ROW1", b = "COL1ROW2";

//這是mysql的代碼

String query = "Insert Into tableName(Column1, Column2)values('" + a + "','" + b + "')";

// conn是你的mysqlconnection

MySqlCommand cmd =新的MySqlCommand(query,conn);

//然后執行它

cmd.ExecuteNonQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM