SQLIte SELECT语句在Visual C#

时间:2016-04-16 12:27:40

标签: c# sqlite listview visual-studio-2015

我从我的SQLite数据库中获取数据并在ListView中插入列表。但是在我的ListView中重复了相同的数据。

以下是获取数据的代码:

public List<Objectdata> getAllData()
    {
        m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
        m_dbConnection.Open();
        List<Objectdata> dataList = new List<Objectdata>();
        Objectdata oD = new Objectdata();

        string sql = "select DISTINCT * from data ORDER BY id DESC";
        SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
        SQLiteDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            oD.id = reader["id"].ToString();
            oD.name = reader["name"].ToString();
            oD.address = reader["address"].ToString();
            oD.mobile = reader["mobile"].ToString();
            oD.date = reader["date"].ToString();
            oD.price = reader["price"].ToString();
            oD.warranty = reader["warranty"].ToString();
            oD.month = reader["month"].ToString();

            dataList.Add(oD);

        }

        m_dbConnection.Close();


        return dataList;
    }

这是将数据添加到ListView的代码:

 private void button_refresh_Click(object sender, RoutedEventArgs e)
    {
        listView.Items.Clear();
        TableController a = new TableController();
        dataList = a.getAllData();

        listView.ItemsSource = dataList;


    }

这是xaml中的listview代码:

   <ListView x:Name="listView" HorizontalAlignment="Left" Height="400" Margin="10,76,0,0" VerticalAlignment="Top" Width="645" >
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Id" Width="20" DisplayMemberBinding="{Binding id}" />
                <GridViewColumn Header="Name" Width="90" DisplayMemberBinding="{Binding name}" />
                <GridViewColumn Header="Adrress" Width="130" DisplayMemberBinding="{Binding address}" />
                <GridViewColumn Header="Mobile" Width="100" DisplayMemberBinding="{Binding mobile}" />
                <GridViewColumn Header="Date" Width="80" DisplayMemberBinding="{Binding date}" />
                <GridViewColumn Header="Price" Width="60" DisplayMemberBinding="{Binding price}" />
                <GridViewColumn Header="Warranty" Width="80" DisplayMemberBinding="{Binding warranty}" />
                <GridViewColumn Header="Month" Width="50" DisplayMemberBinding="{Binding month}" />
            </GridView>
        </ListView.View>
    </ListView>

助手班:

  class Objectdata
{


    public String id
    {
        get; set;
    }

    public String name
    {
        get; set;
    }

    public String month
    {
        get; set;
    }

    public String mobile
    {
        get; set;
    }

    public String address
    {
        get; set;
    }

    public String date
    {
        get; set;
    }

    public String price
    {
        get; set;
    }

    public String warranty
    {
        get; set;
    }
}

这是输出:

The Output

1 个答案:

答案 0 :(得分:1)

您永远不会创建新的Objectdata元素,但始终在循环中更新相同的元素。因此,列表中的所有元素都引用相同的对象。添加

oD = new Objectdata() 

在将对象添加到列表后的循环中。或者将您当前的oD声明移动到循环体的第一个声明。无论如何,你好像不在循环之外使用它。