【问题标题】:Adding multiple listbox items to database将多个列表框项目添加到数据库
【发布时间】:2013-02-15 09:46:09
【问题描述】:

有没有简单的方法可以将列表框中的项目保存到数据库中。 我正在使用 Windows 窗体的访问数据库,用户从组合框中选择项目并将其添加到列表框中。

现在我想将列表框中的所有项目添加到用逗号分隔的数据库中。 我该怎么做?

这是类的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Purchase_Management
{
    public partial class Form1 : Form
    {

        string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Amrit\\Desktop\\Database.accdb ;Persist Security Info=False;";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.SelectedText = "Mr";
            comboBox1.Items.Add("Mr");
            comboBox1.Items.Add("Mrs");
            comboBox1.Items.Add("Miss");
            DataSet ds = GetAllItems();
            comboBox2.DataSource = ds.Tables[0];
            comboBox2.DisplayMember = "Product Name";


        }

        public DataSet GetAllItems()
        {
            DataSet dataSet = new DataSet();
            // Create connection object
            OleDbConnection oleConn = new OleDbConnection(connString);
            try
            {
                oleConn.Open();
                string sql = "SELECT [Product Name] FROM [Product]";
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
                dataAdapter.Fill(dataSet, "Product");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                oleConn.Close();
            }
            if (dataSet.Tables.Count <= 0)
                return null;
            else
                return dataSet;
        }


        public string InsertUser(string custName, string title, string cust, string phoneNumber, string address1, string address2, string city, string postCode, string country, string itemPurchased)
        {

            // Create connection object
            int ix = 0;
            string rTurn = "";
            OleDbConnection oleConn = new OleDbConnection(connString);
            try
            {
                oleConn.Open();
                string sql = "INSERT INTO [Customer]([Customer's Ebayname], [Title],  [Customer's Name], [Phone Number], [Address 1], [Address 2], [City], [Post Code], [Country] , [Item Purchased])" +
                         "VALUES ( @custName, @title, @cust, @phoneNumber, @address1, @address2, @city, @postCode, @country , @itemPurchased)";
                OleDbCommand oleComm = new OleDbCommand(sql, oleConn);

                oleComm.Parameters.Add("@custName", OleDbType.Char).Value = custName;
                oleComm.Parameters.Add("@title", OleDbType.Char).Value = title;
                oleComm.Parameters.Add("@cust", OleDbType.Char).Value = cust;
                oleComm.Parameters.Add("@phoneNumber", OleDbType.Char).Value = phoneNumber;
                oleComm.Parameters.Add("@address1", OleDbType.Char).Value = address1;
                oleComm.Parameters.Add("@address2", OleDbType.Char).Value = address2;
                oleComm.Parameters.Add("@city", OleDbType.Char).Value = city;
                oleComm.Parameters.Add("@postCode", OleDbType.Char).Value = postCode;
                oleComm.Parameters.Add("@country", OleDbType.Char).Value = country;
                oleComm.Parameters.Add("@itemPurchased", OleDbType.Char).Value = itemPurchased;


                ix = oleComm.ExecuteNonQuery();
                if (ix > 0)
                    rTurn = "User Added";
                else
                    rTurn = "Insert Failed";
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                rTurn = ex.ToString();
            }
            finally
            {
                oleConn.Close();
            }
            return rTurn;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            InsertUser(textBox1.Text, comboBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text, textBox8.Text, comboBox2.Text);
            if (MessageBox.Show("Customer Details Saved Successfuly") == DialogResult.OK)
            {
                Form1.ActiveForm.Close();


            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(comboBox2.Text);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (this.listBox1.SelectedIndex >= 0)
                this.listBox1.Items.RemoveAt(this.listBox1.SelectedIndex);
        }



    }
}

【问题讨论】:

  • 你到底在纠结什么?您的代码表明您熟悉数据访问代码,也表明您熟悉 ComboBox 的 Items 属性。使用您已经必须执行此操作的代码应该不难吗?你试过什么?
  • 我唯一关心的是,如何在每个项目后添加带有逗号的条目
  • 即使没有逗号,我也无法添加这些项目
  • 你可以使用字符串生成器来组成一个逗号分隔的字符串对象吗?
  • 告诉我如何将列表框中的所有项目添加到数据库中

标签: c# winforms listbox


【解决方案1】:

第 1 步

连接 ListBox 中的所有项目。 String.Join 接受一个字符串值数组,并返回一个将它们连接在一起的字符串。考虑使用包含您添加的所有项目的ListBox.Items property

第 2 步

在您想要的任何数据库中插入字符串。如果您在 Product 表中重复使用“itemPurchased”列,您将能够使用您在上面第 1 步中连接的字符串。

没有为你编写完整的代码,我不确定我们还能为你做些什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多