Я хочу вставить и обновить свою таблицу. В моем запросе указывается только первичный ключ, имя товара, описание, цена и т. Д. Проблема в том, что у меня есть еще один столбец - FOREIGN KEY. Когда я пытаюсь вставить значения в таблицу базы данных предметов, происходит ошибка. В нем говорится, что количество столбцов не совпадает со значением в строке 1. А также как я могу обновить таблицу, если у меня есть столбец FOREIGN KEY?
class Item
{
public int ItemID { get; set; }
public string ItemName { get; set; }
public string Description { get; set; }
public string Price { get; set; }
public string Stocks { get; set; }
public int GenerateID()
{
int newID = 0;
Connection connection = new Connection();
string sql = "SELECT ItemID FROM tbl_Item ORDER BY ItemID DESC Limit 1";
MySqlConnection conn = new MySqlConnection(connection.ConnectionString);
MySqlCommand cmd = new MySqlCommand(sql, conn);
conn.Open();
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
newID = dr.GetInt32("ItemID");
}
conn.Close();
newID++;
return newID;
}
public void UpdateRecord()
{
try
{
Connection connection = new Connection();
string sql = "UPDATE Item SET ItemName=@itemName, Description=@desc, Price=@price, Stocks=@stocks WHERE ItemID=@itemId";
MySqlConnection conn = new MySqlConnection(connection.ConnectionString);
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@itemId", ItemID);
cmd.Parameters.AddWithValue("@itemName", ItemName);
cmd.Parameters.AddWithValue("@desc", Description);
cmd.Parameters.AddWithValue("@price", Price);
cmd.Parameters.AddWithValue("@stocks", Stocks);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Update Successfully", "Update Record", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e)
{
MessageBox.Show("An error occured: " + e, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void InsertRecord()
{
Connection connection = new Connection();
try
{
string sql = "INSERT INTO tbl_Account VALUES(@itemId, @itemName, @desc, @price, @stocks)";
MySqlConnection conn = new MySqlConnection(connection.ConnectionString);
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@itemId", ItemID);
cmd.Parameters.AddWithValue("@itemName", ItemName);
cmd.Parameters.AddWithValue("@desc", Description);
cmd.Parameters.AddWithValue("@price", Price);
cmd.Parameters.AddWithValue("@stocks", Stocks);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Update Successfully", "Update Record", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e)
{
MessageBox.Show("An error occurred: " + e, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
//for button ADD
private void btnAddItem_Click(object sender, EventArgs e)
{
Item item = new Item();
item.ItemID = item.GenerateID();
item.ItemName = txtINameItem.Text;
item.Description = txtDescriptionItem.Text;
item.Price = txtPriceItem.Text;
item.Stocks = textStocksItem.Text;
item.InsertRecord();
}