一次单击即可创建多个MySQL插入(清单系统)

时间:2018-11-07 15:07:37

标签: c# mysql

我正在建立一个库存系统。基本上,用户将输入收到的数量,系统将为每个单位生成一个单独的库存编号。到目前为止,我已经创建了2个表。一个用于主要库存信息,第二个用于与主要库存信息相关的单个库存项目。我在弄清楚如何根据用户在文本框中输入的数量来创建单个项目时遇到问题。我可以插入主要库存信息的数据,但是如何为单个项目创建条目?这是输入主要库存信息的代码。我肯定可以在这里使用一些帮助。谢谢。

private void button2_Click(object sender, EventArgs e)
    {
        // generate stock number button pressed
        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());
        MySqlCommand cmd1 = new MySqlCommand(@"insert into shopmanager.inventory (projects_project_number, inv_name, inv_description, inv_quantity, inv_date_received) values(@projects_project_number, @inv_name, @inv_description, @inv_quantity, @inv_date_received)", con);

        try
        {
            con.Open();
            cmd1.Parameters.AddWithValue("@projects_project_number", project.Text);
            cmd1.Parameters.AddWithValue("@inv_name", item_name.Text);
            cmd1.Parameters.AddWithValue("@inv_description", item_description.Text);
            cmd1.Parameters.AddWithValue("@inv_quantity", quantity_received.Text);
            cmd1.Parameters.AddWithValue("@inv_date_received", DateTime.Now);
            cmd1.ExecuteNonQuery();
            cmd1.Parameters.Clear();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        con.Close();
    }

1 个答案:

答案 0 :(得分:0)

来自https://dev.mysql.com/doc/connector-net/en/connector-net-programming-prepared-preparing.html

只需再次为每条记录设置参数。

MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;

conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();

conn.ConnectionString = strConnection;

try
{
    conn.Open();
    cmd.Connection = conn;

    cmd.CommandText = "INSERT INTO myTable VALUES(NULL, @number, @text)";
    cmd.Prepare();

    cmd.Parameters.AddWithValue("@number", 1);
    cmd.Parameters.AddWithValue("@text", "One");

    for (int i=1; i <= 1000; i++)
    {
        cmd.Parameters["@number"].Value = i;
        cmd.Parameters["@text"].Value = "A string value";

        cmd.ExecuteNonQuery();
    }
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

从技术上讲,这就是您的做法。但是,我质疑为什么您要让某人输入数量,然后继续输入一条记录,其中您的数量本质上始终为1。通常,您仅使用数量来指示手头上有多少件物品,除非这些物品是非常独特/定制。也就是说,您正在将条形码打在商品上,然后对其进行扫描以了解您使用的是哪种特定供应品。

否则,您只需拍打一条条形码,上面写着它是部件#XYZ,而获得哪一块都无所谓,因为它是部件#XYZ。

其他具有多个库存行项目的情况是机车车辆或从不同的供应商/制造商处获得相同的零件(这更多地与跟踪成本和可能的质量控制有关)