У меня есть следующий код
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Login.DB_Path + ";Jet OLEDB:Database Password=*************"))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand
{
Connection = conn,
CommandText = string.Format("SELECT {1} FROM {0} WHERE {2} = ? AND {3} = ? AND {4} = ? AND {5} = ?",
Constants.tbnm_stock_collapsed,
Constants.clnm_Stock,
Constants.clnm_modelo,
Constants.clnm_colores,
Constants.clnm_tallas,
Constants.clnm_tenda)
};
cmd.Parameters.AddWithValue("?", int.Parse(model));
cmd.Parameters.AddWithValue("?", int.Parse(color));
cmd.Parameters.AddWithValue("?", int.Parse(talla));
cmd.Parameters.AddWithValue("?", Sendfrom_CB.SelectedIndex);
var var_stock = cmd.ExecuteScalar();
int stock;
int.TryParse(Send_Count_TB.Text,out stock);
stock = int.Parse(var_stock.ToString()) - stock;
cmd = new OleDbCommand
{
Connection = conn,
CommandText = string.Format("UPDATE {0} SET {1} = ? WHERE {2} = ? AND {3} = ? AND {4} = ? AND {5} = ?",
Constants.tbnm_stock_collapsed,
Constants.clnm_Stock,
Constants.clnm_modelo,
Constants.clnm_colores,
Constants.clnm_tallas,
Constants.clnm_tenda)
};
cmd.Parameters.AddWithValue("?", stock);
cmd.Parameters.AddWithValue("?", int.Parse(model));
cmd.Parameters.AddWithValue("?", int.Parse(color));
cmd.Parameters.AddWithValue("?", int.Parse(talla));
cmd.Parameters.AddWithValue("?", Sendfrom_CB.SelectedIndex);
int effect = cmd.ExecuteNonQuery();
Я прочитал всю документацию . Так я использую? в запросе и addwithvalue как метод для передачи параметра. Я проверил запрос, и нет ошибки (по крайней мере, я не вижу его).
Хуже всего то, что в результате выполнения параметр effect
имеет значение 1, так как я понимаю, это будет означать, что затронута строка, но когда я перезагружаю таблицу данных, в БД изменений нет .
РЕДАКТИРОВАТЬ: я добавил немного кода. Используемая часть одинакова для обоих, выбранная часть работает и дает правильный запас, номер обновления
РЕДАКТИРОВАТЬ 2: Путь к БД
public static string DB_Path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\folder" + "\\DB.accdb";