首页 > 解决方案 > C# - 如何使用 ListView 和 SQLite 数据库

问题描述

我正在尝试在 ListView 中从 SQLite 数据库中添加一些数据。我遇到了一些困难,因为我想插入列的所有数据而不是一条记录。

测试代码:

Form1.cs {加载}

private void home_form_Load(object sender, EventArgs e)
        {
            listView1.Refresh();

            listView1.View = View.Details;
            listView1.Columns.Add("ID");
            listView1.Columns.Add("Grado");
            listView1.Columns.Add("Cognome");
            listView1.Columns.Add("Nome");
            listView1.Columns.Add("Status");
        }

Form1.cs {menu_button_gestionepax}

private void menu_button_gestionepax_Click(object sender, EventArgs e)
        {
            menu_button_dashboard.BackColor = System.Drawing.Color.DeepSkyBlue;
            panel_dashboard.Visible = false;
            gestionepersonale_panel.Visible = true;
            menu_button_gestionepax.BackColor = System.Drawing.Color.Blue;

            listView1.Refresh();
            ListViewItem lst = new ListViewItem();
            lst.SubItems.Add(LoadUsers.ManagerFind());
            lst.SubItems.Add(LoadUsers.ManagerFind());
            lst.SubItems.Add(LoadUsers.ManagerFind());
            lst.SubItems.Add(LoadUsers.ManagerFind());
            lst.SubItems.Add(LoadUsers.ManagerFind());

            listView1.Items.Add(lst);

            /*
            string[] row = { LoadUsers.ManagerFindid(), LoadUsers.ManagerFindid() };
            var listViewItem = new ListViewItem(row);
            infobox_listview.Items.Add(listViewItem);
            */
        }

加载用户.cs

public dynamic string ManagerFind()
{
    using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
    {
        var select = cnn.Query($"select id from utenti");

        if (select.Any())
        { return select[0].ToString(); }
        else return "wrong";
    }
}

我还进行了各种其他测试,在某些情况下的困难之一是从LoadUsers.cs调用字符串 ManagerFind()

标签: c#winformssqlitelistview

解决方案


尝试这样的事情从你的 sql 中获取你的行和列

         using (SqlConnection connection = new SqlConnection(_sqlConnectionStringFromUserImput))
                {
                    connection.Open();
                    if (connection.State == ConnectionState.Open)
                    {
                        SqlCommand sqlCommand =
                            new SqlCommand(
                                "select id from utenti",
                                connection)
                            {
                                CommandType = CommandType.Text,
                                CommandTimeout = 20
                            };
                        SqlDataReader reader = sqlCommand.ExecuteReader();
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                DateTime datetimefield = reader.GetFieldValue<DateTime>(0);
                                string stringField = reader.GetFieldValue<string>(1);
                            }
                        }
                        reader.Close();
    }
                    connection.Close();
                }

推荐阅读