在数据库中存储选中的CheckedListBox值

本文关键字:CheckedListBox 存储 数据库 | 更新日期: 2023-09-27 18:05:03

我的数据库中有两个表。假设表A和表b。表A的值放在checklistbox中。在复选框中选择的值,然后放入表B.我试图使一个代码,但它不会工作。你知道如何解决这个问题吗?

谢谢各位。

顺便说一下,我用的是c#。
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 Npgsql;
namespace WindowsFormsApplication1
{
    public partial class Form8 : Form
    {
        public Form8()
        {
            InitializeComponent();
            this.Load += Form8_Load;
            button2.Click += button2_Click;
        }
        private void Form8_Load(object sender, EventArgs e)
        {
            string connstring = ("Server=localhost;Port=5432;User Id=postgres;Password=021393;Database=postgres;");
            NpgsqlConnection conn = new NpgsqlConnection(connstring);
            NpgsqlCommand cmd = new NpgsqlCommand("SELECT conname FROM condition", conn);
            cmd.CommandType = CommandType.Text;
            conn.Open();
            using (NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd))
            {
                DataTable dt = new DataTable();
                da.Fill(dt);
                ((ListBox)checkedListBox1).DataSource = dt;
                ((ListBox)checkedListBox1).DisplayMember = "conname";
                ((ListBox)checkedListBox1).DisplayMember = "conid";
                string[] condition = dt.Rows[0]["conname"].ToString().Split(',');
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string connstring = ("Server=localhost;Port=5432;User Id=postgres;Password=021393;Database=postgres;");
            NpgsqlConnection conn = new NpgsqlConnection(connstring);
            NpgsqlCommand cmd = new NpgsqlCommand("Insert into famhistory(famid) Values (@famid)", conn);
            conn.Open();
            cmd.Parameters.AddWithValue("@famid", checkedListBox1.Text);
            cmd.ExecuteNonQuery();
            MessageBox.Show("Data has been saved");
            conn.Close();
        }
    }
}

在数据库中存储选中的CheckedListBox值

您必须遍历所有选定的项目:

//check if any item is selected
if (checkedListBox1.SelectedItems.Count > 0)
{
    //connect to database
    string connstring = ("Server=localhost;Port=5432;User Id=postgres;Password=021393;Database=postgres;");
    NpgsqlConnection conn = new NpgsqlConnection(connstring);
    conn.Open();
    //loop through all selected items
    foreach (object item in checkedListBox1.CheckedItems)
    {
        //convert item to string
        string checkedItem = item.ToString();
        //insert item to database
        NpgsqlCommand cmd = new NpgsqlCommand("Insert into famhistory(famid) Values (@famid)", conn);
        cmd.Parameters.AddWithValue("@famid", checkedItem); //add item
        cmd.ExecuteNonQuery();
    }
    //close connection
    conn.Close();
    MessageBox.Show("Data has been saved");
}

注意:我在一个打开的连接中执行所有插入命令,因为频繁地打开和关闭连接不是最佳实践。