2013-02-15 3 views
2

enter image description here Есть ли простой способ сохранить элементы в списке в базе данных. Я использую базу данных доступа для формы окна, где пользователь выбирает элементы из выпадающего списка и добавляет их в список.Добавление нескольких элементов списка в базу данных

Теперь я хочу добавить все элементы в список в базу данных, разделенные запятой. Как я могу это выполнить?

Вот код класса

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); 
     } 



    } 
} 
+0

Что именно вы боретесь? Ваш код демонстрирует, что вы знакомы с кодом доступа к данным, а также что вы знакомы с свойством Items ComboBox. Вам не составит труда использовать код, который у вас уже есть? Что вы пробовали? – RainbowFish

+0

моя единственная забота: как я могу добавлять записи с запятой после каждого элемента? –

+0

Я не могу добавить эти элементы даже без запятых –

ответ

2

Шаг 1

сцепить все детали в вашем ListBox. String.Join принимает массив строковых значений и возвращает одну строку, которая объединяет их вместе. Рассмотрите возможность использования ListBox.Items property, который содержит все элементы, которые вы добавили.

Шаг 2

Вставьте строку в зависимости от того, базы данных вы хотите. Если вы повторно используете столбец «itemPurchased» в таблице Product, вы сможете использовать строку, которую вы объединили с шага 1 выше.

Чтобы не писать весь код для вас, я не уверен, что еще мы можем сделать для вас здесь.

Смежные вопросы