我试图用一个按钮来更新我的商店库存水平,当这个按钮被按下时,我想所有的数量都要增加文本框中的数量,我有一个去实现一些代码来做到这一点,但它总是击中数据不插入的信息。。。
using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace Aliena_Store
{
public partial class Form3 : Form
{
MySqlConnection connection = new MySqlConnection("server=localhost;user=root;database=Aliena_Store;port=3306;password=Blackie");
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
{
//MySqlConnection(VarribleKeeper.MySQLConnectionString);
connection.Open();
MySqlDataAdapter MyDA = new MySqlDataAdapter();
string sqlSelectAll = "SELECT * From Aliena_Store.Game_Details";
MyDA.SelectCommand = new MySqlCommand(sqlSelectAll, connection);
DataTable table = new DataTable();
MyDA.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
dataGridView1.DataSource = bSource;
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void SeeForm2_Click(object sender, EventArgs e)
{
Hide();
Form2 f = new Form2(); // This is bad
f.Show();
}
private void button1_Click(object sender, EventArgs e)
{
string updateQuery = ("UPDATE Aliena_Store.Game_details SET Quantity = '" + AddStock.Text + "'");
try
{
MySqlCommand command = new MySqlCommand(updateQuery, connection);
if (command.ExecuteNonQuery() == 1)
{
MessageBox.Show("DATA UPDATED");
}
else
{
MessageBox.Show("Data NOT UPDATED");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void AddStock_TextChanged(object sender, EventArgs e)
{
}
}
}
知道我的代码哪里出错了吗?
1条答案
按热度按时间s71maibg1#
update查询没有where子句,因此每个记录都被设置为新数量,executenonquery将返回一个更改了行数的数字。
仅当表中只有一行时,代码才会符合正确的if大小写。
一个简单的解决方法如下
相反,如果只想更新一条记录,则需要向查询中添加where条件。但是这个where条件要求您提供数据库表primarykey的值,以便引擎识别要更改的记录。
比如说
此查询将仅更新具有指定gameid的记录(其中gameid是字段的假想名称,具有表的主键)
请注意,我在查询中使用了参数占位符。虽然这不是您问题的主要主题,但值得注意的是,编写正确的sql代码除了安全性之外,还将给您带来许多好处。在解析字符串文本以更正数据类型时没有问题,sql命令的可读性更强。