遍历并将所有列表框项目添加到 Access 数据库(到单独的行中)

Loop Through and Add All ListBox Items To an Access Database (into seperate rows)

我正在使用以下代码尝试循环遍历列表框,并将每个项目插入到访问数据库中的单独行中。该代码仅适用于第一个列表框项目,但会按预期插入它。

我知道如何需要循环以便插入所有项目而不仅仅是第一个

        foreach (var listBoxItem in ServicePartsList.Items)
        {

            item = listBoxItem.ToString();
            string[] result = item.Split(',');
            MessageBox.Show(result[0] + result[1]);
            using (OleDbConnection conn = new OleDbConnection())
            {
                conn.ConnectionString = connection.dbdataSource;
                // insert into database
                using (OleDbCommand addPart = new OleDbCommand())
                {
                    //Open Connection
                    conn.Open();
                    addPart.Connection = conn;

                    addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)";
                    addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick);
                    addPart.Parameters.AddWithValue("partNo", result[0]);
                    addPart.Parameters.AddWithValue("quantity", result[1]);

                    //execute SQL
                    int recordsAdded = addPart.ExecuteNonQuery();

                    //Close DB Connection
                    conn.Close();

                }

可能不是确切的解决方案,但与其循环打开连接,不如打开一次,然后使用一个连接插入多行:

using (OleDbConnection conn = new OleDbConnection())
{
    conn.ConnectionString = connection.dbdataSource;
    conn.Open();

    foreach (var listBoxItem in ServicePartsList.Items)
    {
        item = listBoxItem.ToString();
        string[] result = item.Split(',');
        MessageBox.Show(result[0] + result[1]);
        // insert into database
        using (OleDbCommand addPart = new OleDbCommand())
        {
            //Open Connection

            addPart.Connection = conn;

            addPart.CommandText = "INSERT INTO servicePart (ServiceID, PartNo, Quantity) VALUES (@sID, " + "@partNo, " + "@quantity)";
            addPart.Parameters.AddWithValue("sID", ModelCode + ModelYear + ButtonClick);
            addPart.Parameters.AddWithValue("partNo", result[0]);
            addPart.Parameters.AddWithValue("quantity", result[1]);

            //execute SQL
            int recordsAdded = addPart.ExecuteNonQuery();

        }
    }
    //Close DB Connection
    conn.Close();
}