对不起,如果这看起来像新手: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();
}
到目前为止,我还没有成功插入,甚至没有显示消息框,我对你对此问题的任何评论都很感激。
答案 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();
如果您愿意,可以随意从上述语句中获取返回值 - 它将返回受影响的行数。