2016-01-03 3 views
0

Имея немного проблем. Я пытаюсь добавить элементы combobox в свою базу данных, но это не работает.Добавить элементы со списком в базу данных

код:

string con = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Database;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"; 
string connectionString = con; 
using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand cmd = new SqlCommand("INSERT INTO JobRoles (Jobroles) VALUES (@jr)"); 
    cmd.CommandType = CommandType.Text; 
    cmd.Connection = connection; 
    cmd.Parameters.AddWithValue("@jr", comboBox1.Items.ToString()); 

    connection.Open(); 
    try 
    { 
     cmd.ExecuteNonQuery(); 
    } 
    catch (Exception) 
    { 
     MessageBox.Show("Datebase error. Please contact software engineer.", "Error 303"); 
     return; 
    } 

Я пытаюсь создать новую строку для каждого элемента комбинированного ящика в моей базе данных, но все элементы поле со списком отображаются в одной ячейке, которая даст мне это:

System.Windows.Forms.ComboBox+ObjectCollection 

Можно ли добавлять элементы со списком в мою базу данных, и с каждым элементом со списком создается новая строка в базе данных? Благодаря! Извините за любую путаницу.

ответ

0

Вы не должны добавлять все элементы в одну команду. Вместо этого вы должны использовать цикл foreach и добавлять пометы по одному.

string con = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Database;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"; 
string connectionString = con; 

foreach (var item in comboBox1.Items) //loop to go through the items one by one 
{ 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlCommand cmd = new SqlCommand("INSERT INTO JobRoles (Jobroles) VALUES (@jr)"); 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = connection; 
     cmd.Parameters.AddWithValue("@jr", item.ToString()); //Add each item to database separately 

     connection.Open(); 
     try 
     { 
      cmd.ExecuteNonQuery(); 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Datebase error. Please contact software engineer.", "Error 303"); 
      return; 
     } 
    } 
} 
Смежные вопросы