【问题标题】:OleDbConnection - Not all information being passedOleDbConnection - 并非所有信息都被传递
【发布时间】:2016-06-16 15:42:41
【问题描述】:

我正在尝试将一些信息传递给 Access 数据库,但是我不确定我是否正确使用了 ExecuteNonQuery()。这是我正在使用的代码:

public void WriteToDB(string connStr, string tblName)
    {
        string[] accounts = { "@ID", "@Date", "@Line Item", "@Ranking Item", "@Item Attribute", "@Current_Period_Ranking(b)" };

        OleDbConnection conn = new OleDbConnection(connStr);
        conn.Open();
        OleDbCommand CmdSQL = new OleDbCommand(string.Format("Insert into [{0}] ([ID], [Date], [Line Item], [Ranking Item], [Ranking]) VALUES(?,?,?,?,?)",tblName),conn);
        CmdSQL.Parameters.AddWithValue("@ID", 1);
        CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016");
        CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName);
        CmdSQL.Parameters.AddWithValue("@Ranking Item", "Ranking");
        CmdSQL.Parameters.AddWithValue("@Ranking", this.Rank.GetLineItem(3));
        CmdSQL.ExecuteNonQuery();
        CmdSQL.Parameters.AddWithValue("@ID", 2);
        CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016");
        CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName);
        CmdSQL.Parameters.AddWithValue("@Ranking Item", "Price");
        CmdSQL.Parameters.AddWithValue("@Ranking", this.Price);
        CmdSQL.ExecuteNonQuery();
        CmdSQL.Parameters.AddWithValue("@ID", 3);
        CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016");
        CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName);
        CmdSQL.Parameters.AddWithValue("@Ranking Item", "Pounds");
        CmdSQL.Parameters.AddWithValue("@Ranking", this.Pounds);
        CmdSQL.ExecuteNonQuery();
        CmdSQL.Parameters.AddWithValue("@ID", 4);
        CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016");
        CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName);
        CmdSQL.Parameters.AddWithValue("@Ranking Item", "Opportunity");
        CmdSQL.Parameters.AddWithValue("@Ranking", this.Opportunity);
        CmdSQL.ExecuteNonQuery();
    }

当我运行这段代码时,Access DB 只显示 1。

【问题讨论】:

    标签: c# oledbconnection oledbcommand executenonquery


    【解决方案1】:

    由于你使用的是同一个命令,所以你必须在之后清除参数:

    CmdSQL.ExecuteNonQuery();
    CmdSQL.Parameters.Clear();
    CmdSQL.Parameters.AddWithValue("@ID", 4);
    ....
    

    附带说明,日期应该是数据库中的日期,而不是字符串。如果您有一堆具有相同结构的表,您的数据库看起来有问题。为什么不只是一个表和一个字段来区分它是什么类型的行。这将使您的查询更容易。将那些一次性的数据库对象放在 using 块中也是非常常见和有益的。

    【讨论】:

    • 还有日期:这是我正在编写的一个外部 DLL,它将与 VBA 进行通信,所以我将把日期作为字符串传递,然后将它们作为日期加载。只是还没有完成那部分的跑腿工作。这只是确保负载正常工作。不过感谢您的帮助!
    猜你喜欢
    • 2021-04-01
    • 2011-08-28
    • 2012-06-11
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2023-04-09
    • 2018-04-18
    • 2014-10-17
    相关资源
    最近更新 更多