2016-10-27 77 views
0

我无法弄清楚什么是错的查询,但它没有更新表中的任何值的MS Access更新查询不能

string qry = "UPDATE Stock SET [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] Where [email protected]"; 
OleDbCommand ocmd = new OleDbCommand(qry,BBC); 
ocmd.Parameters.AddWithValue("@n", name); 
ocmd.Parameters.AddWithValue("@u", unit); 
ocmd.Parameters.AddWithValue("@p", price); 
ocmd.Parameters.AddWithValue("@t", tax); 
ocmd.Parameters.AddWithValue("@b", balance); 
ocmd.Parameters.AddWithValue("@s", status); 
ocmd.Parameters.AddWithValue("@sid", sid); 
ocmd.ExecuteNonQuery(); 

PriceTaxBalanceDecimal值。

我做了调试和其工作正常,但只是没有更新的价值。

+1

你得到任何错误或异常? –

+0

你调试过吗?值设置为参数可以吗? – Badiparmagi

+0

它没有给予任何的错误,是的,我做了调试和它工作正常,但只是没有更新,你可以分享你的变量是如何为值定义的值 – Shelly

回答

0

设定每个参数的类型和执行查询。

List<OleDbParameter> paramList = new List<OleDbParameter>(); 

OleDbParameter param = new OleDbParameter("@param", OleDbType.TypeName); 

param.Value = value; 

paramList.Add(param); 

ocmd.Parameters.AddRange(paramArray); 
0

我认为这会为你做。

string ConnString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\your_path_here\test.accdb"; 
using(OleDbConnection conn = new OleDbConnection(ConnString)) 
using(OleDbCommand cmd = conn.CreateCommand()) 
{ 
    cmd.CommandText = @ "UPDATE Stock SET [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] Where [email protected]"; 

    cmd.Parameters.AddWithValue("@n", txtItemName.Text); 
    cmd.Parameters.AddWithValue("@u", txtUnit.Text); 
    cmd.Parameters.AddWithValue("@p", Convert.ToDecimal(txtPrice.Text)); 
    cmd.Parameters.AddWithValue("@t", Convert.ToDecimal(txtTax.Text)); 
    cmd.Parameters.AddWithValue("@b", Convert.ToDecimal(txtBalance.Text)); 
    cmd.Parameters.AddWithValue("@s", txtStatus.Text); 
    cmd.Parameters.AddWithValue("@sid", txtSID.Text); 

    conn.Open(); 
    int rowsAffected = cmd.ExecuteNonQuery(); 
    conn.Close(); 
}