首页 > 解决方案 > 执行 oledbcommand qith 更新查询不会更新数据表

问题描述

我有以下代码

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";

标签: c#sqloledboledbcommand

解决方案


推荐阅读