我有以下代码
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();
我已经阅读了所有documentation。所以我正在使用?在查询中使用addwithvalue作为传递参数的方法。我检查了查询,没有错误(至少我没有看到它)。
最糟糕的是,在执行的结果中,参数effect
的值为1,据我了解,这意味着有一行受影响,但是当我重新加载数据表时,数据库。
编辑:我添加了一些代码。两者的使用部分相同,选择的一个正在工作并提供正确的库存,更新编号。
编辑2:指向数据库的路径
public static string DB_Path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\folder" + "\\DB.accdb";