如何从 table 中减去数量并以 C# 形式更新它
How to subtract quantity from table and update it in c# forms
我是 IT 专业三年级的学生,我从这个论坛找到了很多帮助,但我一直在用 C# 创建项目,所以我需要你的帮助。我的数据库中有 4 个 table,但我们将重点关注其中 2 个 materijal(Material) table 和 Skart(Scrap) table:
materijal Table(原始)有:
idmaterijal(INT),
naziv_materijala(VARCHAR),
kolicina_materiala(FLOAT),
mjerna_jedinica(VARCHAR),
sifra_materijala(INT)
material Table(英文):
idmaterial(INT) ,
name_material(VARCHAR) ,
quantity_material(FLOAT) ,
measuring_unit(VARCHAR) ,
code_material(INT)
skart Table(原创)有:
idskart(INT),
materijal_idmaterijal(INT)
报废 Table(eng) :
idscrap(INT),
material_idmaterial(INT).
它们与非识别关系相关1:1。现在我的 C# 窗体中有一个组合框,如下所示。我需要从 table Materials (name_material, quantity_material, mesuring_unit, code_material) 中取出并减去我插入的数量我的表单上的文本框。例如,我的 Material table 中有 108.15 公斤 HR,我想将 45 公斤废弃 table,我如何在 C# 中做到这一点...
图片:
https://prnt.sc/hdvGuXJWNI0Q - 我在 MySQL 中的图表(这是我的语言,但我为你们翻译了每个单元格名称)
https://prnt.sc/lgIRVTCOe670 - Material面板
https://prnt.sc/t1IGxpgJ8GHl - 通过剪贴簿面板中的组合框选择 material
https://prnt.sc/6InfCPpezZga - 关于如何减去的示例
在这里我有一个想法,所以你可以从图片 skart 面板 https://prnt.sc/6InfCPpezZga 中获取并通过 comboBox1 插入 name_material(它列出了 [=60] 中的所有 material =] table ...在这里我选择了 material) 的 HR 名称和 quantity_material 通过 textBox7 在我的案例中 45 带有保存按钮 aka 按钮 13 我需要更新我的 material table 通过获取 quantity_material - textBox7 值并放置在我的 dataGridView3 中( 显示 idscrap 和 material_idmaterial)code_material,name_material, quantity_material(但我在 textBox7 中插入的数量) 和 measuring_unit ,我知道放置它并用 dataGridView 显示我必须进行内部连接或左连接,但我不太明白它...
private void button13_Click(object sender, EventArgs e)
{
konekcija.Open();
//OleDbCommand komanda = new OleDbCommand();
MySqlCommand komanda = new MySqlCommand();
komanda.Connection = konekcija;
komanda.CommandType = CommandType.Text;
komanda.CommandText = "update materijal set naziv_materijala='" + comboBox1 + "' where kolicina_materijala='" + textBox7.Text + "'";
komanda.ExecuteNonQuery();
konekcija.Close();
comboBox1.Text = "";
textBox7.Text = "";
MessageBox.Show("Uspjesno ste unijeli izabrani Škart");
}
像这样的代码的正确方法应该是这样的:
private void UpdateNameFromQuantityButton_Click(object sender, EventArgs e)
{
//konekcija.Open(); //do not keep a connection hanging around; keep a connectionString instead
var sql = "update materijal set naziv_materijala=@nm where kolicina_materijala=@km";
using var konekcija = new MySqlConnection(connectionString);
using var komanda = new MySqlCommand(sql, konekcija);
konekcija.Open();
komanda.Parameters.AddWithValue("@nm", materialNameComboBox.Text);
komanda.Parameters.AddWithValue("@km", quantityTextBox.Text);
var rowsAffected = komanda.ExecuteNonQuery(); //handy to capture this to know if nothing was changed (0 rows affected)
konekcija.Close();
materialNameComboBox.Text = "";
quantityTextBox.Text = "";
MessageBox.Show("Uspjesno ste unijeli izabrani Škart");
}
- 在您的命令和连接上使用
using
;在需要时创建一个新的连接对象。重复使用同一个可能会导致某些数据库出现问题。代码中 MySqlConnection 对象的数量与数据库服务器的实际 TCP 连接数量无关,因为 TCP 连接由其他地方的机制池化。您对 Open 和 Close 的使用实际上只是租用和 returns 一个共用连接
- 始终在 SQL 中使用
@parameters
将数据放入命令中。总是*
- 完成后尽快关闭连接
* 除非“数据”类似于 table 名称或列名,在这种情况下,它不能被参数化;尽量避免这种情况 - 这通常是可能的
我是 IT 专业三年级的学生,我从这个论坛找到了很多帮助,但我一直在用 C# 创建项目,所以我需要你的帮助。我的数据库中有 4 个 table,但我们将重点关注其中 2 个 materijal(Material) table 和 Skart(Scrap) table:
materijal Table(原始)有:
idmaterijal(INT),
naziv_materijala(VARCHAR),
kolicina_materiala(FLOAT),
mjerna_jedinica(VARCHAR),
sifra_materijala(INT)
material Table(英文):
idmaterial(INT) ,
name_material(VARCHAR) ,
quantity_material(FLOAT) ,
measuring_unit(VARCHAR) ,
code_material(INT)
skart Table(原创)有:
idskart(INT),
materijal_idmaterijal(INT)
报废 Table(eng) :
idscrap(INT),
material_idmaterial(INT).
它们与非识别关系相关1:1。现在我的 C# 窗体中有一个组合框,如下所示。我需要从 table Materials (name_material, quantity_material, mesuring_unit, code_material) 中取出并减去我插入的数量我的表单上的文本框。例如,我的 Material table 中有 108.15 公斤 HR,我想将 45 公斤废弃 table,我如何在 C# 中做到这一点...
图片:
https://prnt.sc/hdvGuXJWNI0Q - 我在 MySQL 中的图表(这是我的语言,但我为你们翻译了每个单元格名称)
https://prnt.sc/lgIRVTCOe670 - Material面板
https://prnt.sc/t1IGxpgJ8GHl - 通过剪贴簿面板中的组合框选择 material
https://prnt.sc/6InfCPpezZga - 关于如何减去的示例
在这里我有一个想法,所以你可以从图片 skart 面板 https://prnt.sc/6InfCPpezZga 中获取并通过 comboBox1 插入 name_material(它列出了 [=60] 中的所有 material =] table ...在这里我选择了 material) 的 HR 名称和 quantity_material 通过 textBox7 在我的案例中 45 带有保存按钮 aka 按钮 13 我需要更新我的 material table 通过获取 quantity_material - textBox7 值并放置在我的 dataGridView3 中( 显示 idscrap 和 material_idmaterial)code_material,name_material, quantity_material(但我在 textBox7 中插入的数量) 和 measuring_unit ,我知道放置它并用 dataGridView 显示我必须进行内部连接或左连接,但我不太明白它...
private void button13_Click(object sender, EventArgs e)
{
konekcija.Open();
//OleDbCommand komanda = new OleDbCommand();
MySqlCommand komanda = new MySqlCommand();
komanda.Connection = konekcija;
komanda.CommandType = CommandType.Text;
komanda.CommandText = "update materijal set naziv_materijala='" + comboBox1 + "' where kolicina_materijala='" + textBox7.Text + "'";
komanda.ExecuteNonQuery();
konekcija.Close();
comboBox1.Text = "";
textBox7.Text = "";
MessageBox.Show("Uspjesno ste unijeli izabrani Škart");
}
像这样的代码的正确方法应该是这样的:
private void UpdateNameFromQuantityButton_Click(object sender, EventArgs e)
{
//konekcija.Open(); //do not keep a connection hanging around; keep a connectionString instead
var sql = "update materijal set naziv_materijala=@nm where kolicina_materijala=@km";
using var konekcija = new MySqlConnection(connectionString);
using var komanda = new MySqlCommand(sql, konekcija);
konekcija.Open();
komanda.Parameters.AddWithValue("@nm", materialNameComboBox.Text);
komanda.Parameters.AddWithValue("@km", quantityTextBox.Text);
var rowsAffected = komanda.ExecuteNonQuery(); //handy to capture this to know if nothing was changed (0 rows affected)
konekcija.Close();
materialNameComboBox.Text = "";
quantityTextBox.Text = "";
MessageBox.Show("Uspjesno ste unijeli izabrani Škart");
}
- 在您的命令和连接上使用
using
;在需要时创建一个新的连接对象。重复使用同一个可能会导致某些数据库出现问题。代码中 MySqlConnection 对象的数量与数据库服务器的实际 TCP 连接数量无关,因为 TCP 连接由其他地方的机制池化。您对 Open 和 Close 的使用实际上只是租用和 returns 一个共用连接 - 始终在 SQL 中使用
@parameters
将数据放入命令中。总是* - 完成后尽快关闭连接
* 除非“数据”类似于 table 名称或列名,在这种情况下,它不能被参数化;尽量避免这种情况 - 这通常是可能的