通过事件c#传递变量

时间:2016-05-25 04:14:32

标签: c# database visual-studio variables events

对不起,如果这看起来像新手:3 ...我对C#没有太多经验,但我真的很喜欢在C#上编码,我认为它是一种非常灵活和友好的面向对象语言。

那么好。 我试图通过按钮点击来传递变量,以便能够使用按钮点击获得的值插入数据库。我有几个按钮将“产品”值回收到不同的字符串,在自然语言方法中,这将是:

如果我点击某个“产品”,变量产品将获得该按钮的名称,接下来我会点击“数量”按钮,这将给我数量编号,然后程序将插入到具有这些值的DB。但我怀疑如何根据点击的按钮回收这些值。

简而言之,我的代码如下:

    private String product;
    private int quantity;
    private char prodchosen;
    private char quantitychosen;

    private void Product_Click(object sender, EventArgs e)
    {
      prodchosen = 'Y';
      product = "Beer";
    }


    private void Product2_Click(object sender, EventArgs e)
    {
      prodchosen = 'Y';
      product = "Juice";
    }

    public void bttn1_Click(object sender, EventArgs e)
    {
      quantitychosen = 'Y';
      quantity = 1;
      if (prodchosen == 'Y' && quanitychosen == 'Y')
      {
       MySqlConnection mcon = new MySqlConnection("server=localhost;database=***;username=root;password=***");
       mcon.Open();
       string insert = "INSERT INTO accounts product, quantity VALUES" + product + " , " + quantity;


       MySqlCommand cmd = new MySqlCommand(insert, mcon);
       MessageBox.Show("Product was succesfully added");
     }
     else {
       MessageBox.Show("Quantity and product not recognized");
     }

插入数据库后,这些值将显示在gridview中,select语句将由组合框选择索引值分隔,如:

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        clientchosen = 'Y';
        client_id = comboBox1.SelectedIndex;

        MySqlConnection mcon = new MySqlConnection("server=localhost;database=***;username=root;password=***");
        mcon.Open();

        char open = 'Y';

        int selectedIndex = comboBox1.SelectedIndex;
        Object selectedItem = comboBox1.SelectedItem;

        string select2 = "SELECT * FROM account where client_id = " + selectedIndex + " and open = " + open;

        MySqlCommand cmd2 = new MySqlCommand(select2, mcon);

        object result = cmd.ExecuteNonQuery();

    }

到目前为止,我还没有成功插入,甚至没有显示消息框,我对你对此问题的任何评论都很感激。

3 个答案:

答案 0 :(得分:2)

我认为你的SQL不太正确,列和值子句需要括号,字符串值需要引号。试试这个:

string insert = "INSERT INTO accounts(product, quantity) " +
                "VALUES('" + product + "' , " + quantity + ")";

答案 1 :(得分:2)

尝试使用此

SqlConnection dbconnect = new SqlConnection("server=localhost;database=***;username=root;password=***");
SqlCommand cmd;

    try
    {
        cmd = new SqlCommand("INSERT INTO accounts(product, quantity) VALUES(@prod, @quan)", dbconnect);
        cmd.Parameters.AddWithValue("@prod", Your_Text_Box.Text);
        cmd.Parameters.AddWithValue("@quan", Your_Text_Box.Text);
        dbconnect.Open();
    }

这是方法,我将值插入数据库。效果很好,对我有好处

答案 2 :(得分:0)

阅读其他答案后编辑了更详细的内容。参数化查询是个好主意。看看为什么会这样。

您的SQL无效,因为您在VALUES之后错过了一个空格。之后的产品参数将无法识别,您的插入将无效。

你永远不会执行你的命令。用

执行
cmd.ExecuteNonQuery();

如果您愿意,可以随意从上述语句中获取返回值 - 它将返回受影响的行数。