C# 从列表中选择项,然后从 SQL Server CE 数据库中获取项

本文关键字:CE Server 数据库 SQL 获取 列表 选择 然后 | 更新日期: 2023-09-27 18:31:20

我正在处理需要从列表视图中进行选择的内容,然后根据第 1 列(或 ii)从 SQL Server 数据库中选择该项,然后将其重写为本地数据表以处理为文本文件。这是我到目前为止所拥有的:

var con = new SqlCeConnection(ConfigurationManager.ConnectionStrings[Connection.ConnectionStrings.CurrentConnection].ConnectionString);
foreach (ListViewItem item in LSTAsset.SelectedItems)
{
    for (int ii = 0; ii < LSTAsset.SelectedItems.Count; ii++)
    {
        string select = LSTAsset.SelectedItems[ii].Text;
        if (con != null && con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        var cmd = new SqlCeCommand("Select assetname, serial from asset where        assetname like '%" + select + "%'", con);
        SqlCeDataAdapter dataadapt = new SqlCeDataAdapter(cmd);
        //DataTable datatable = new DataTable();
        if (ii == 0)
        {
            dataadapt.Fill(steve.iTable);
        }
        if (ii < 0)
        {
            dataadapt.Update(steve.iTable);
        }
    }
}

现在我的问题是,当选择多个项目时,它似乎使所选项目翻倍。假设您选择了 2 个项目,它现在通过代码运行 4 次,并在数据表中为您提供 4 行。为什么要将代码加倍?它稍后会破坏输出文件,因为它在表中写入所需行的 2 倍。

C# 从列表中选择项,然后从 SQL Server CE 数据库中获取项

看起来你循环了两次不必要的(SelectedItems.Count)。

尝试删除内环或外环,例如:

foreach (ListViewItem item in LSTAsset.SelectedItems)

原因是因为下一条语句通过 for 循环而不是foreach执行相同的操作,您将连接到数据库 n 倍 * 2,其中n是所选项目计数。